forked from GoogleCloudPlatform/magic-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
make go-converted YAML compatible with go compiler (GoogleCloudPlatfo…
…rm#10033) Co-authored-by: Zhenhua Li <[email protected]> Co-authored-by: Nick Elliot <[email protected]>
- Loading branch information
1 parent
fd6d4b7
commit 03df3b2
Showing
31 changed files
with
4,959 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,220 @@ | ||
// Copyright 2024 Google 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 api | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/magic-modules/mmv1/google" | ||
) | ||
|
||
// require 'api/object' | ||
// require 'api/timeout' | ||
|
||
// Base class from which other Async classes can inherit. | ||
type Async struct { | ||
// Embed YamlValidator object | ||
google.YamlValidator | ||
|
||
// Describes an operation | ||
Operation Operation | ||
|
||
// The list of methods where operations are used. | ||
Actions []string | ||
} | ||
|
||
// def validate | ||
// super | ||
|
||
// check :operation, type: Operation | ||
// check :actions, default: %w[create delete update], type: ::Array, item_type: ::String | ||
// end | ||
|
||
// def allow?(method) | ||
// @actions.include?(method.downcase) | ||
// end | ||
|
||
// Base async operation type | ||
type Operation struct { | ||
google.YamlValidator | ||
|
||
// Contains information about an long-running operation, to make | ||
// requests for the state of an operation. | ||
|
||
Timeouts Timeouts | ||
|
||
Result Result | ||
} | ||
|
||
// def validate | ||
// check :result, type: Result | ||
// check :timeouts, type: Api::Timeouts | ||
// end | ||
|
||
// Base result class | ||
type Result struct { | ||
google.YamlValidator | ||
|
||
// Contains information about the result of an Operation | ||
|
||
ResourceInsideResponse bool | ||
} | ||
|
||
// def validate | ||
// super | ||
// check :resource_inside_response, type: :boolean, default: false | ||
// end | ||
|
||
// Represents an asynchronous operation definition | ||
type OpAsync struct { | ||
// TODO: Should embed Async or not? | ||
// < Async | ||
|
||
Operation OpAsyncOperation | ||
|
||
Result OpAsyncResult | ||
|
||
Status OpAsyncStatus | ||
|
||
Error OpAsyncError | ||
|
||
// If true, include project as an argument to OperationWaitTime. | ||
// It is intended for resources that calculate project/region from a selflink field | ||
IncludeProject bool `yaml:"include_project"` | ||
|
||
// The list of methods where operations are used. | ||
Actions []string | ||
} | ||
|
||
// def initialize(operation, result, status, error) | ||
// super() | ||
// @operation = operation | ||
// @result = result | ||
// @status = status | ||
// @error = error | ||
// end | ||
|
||
// def validate | ||
// super | ||
|
||
// check :operation, type: Operation, required: true | ||
// check :result, type: Result, default: Result.new | ||
// check :status, type: Status | ||
// check :error, type: Error | ||
// check :actions, default: %w[create delete update], type: ::Array, item_type: ::String | ||
// check :include_project, type: :boolean, default: false | ||
// end | ||
|
||
// The main implementation of Operation, | ||
// corresponding to common GCP Operation resources. | ||
type OpAsyncOperation struct { | ||
// TODO: Should embed Operation or not? | ||
// < Async::Operation | ||
Kind string | ||
|
||
Path string | ||
|
||
BaseUrl string `yaml:"base_url"` | ||
|
||
WaitMs int `yaml:"wait_ms"` | ||
|
||
Timeouts Timeouts | ||
|
||
// Use this if the resource includes the full operation url. | ||
FullUrl string `yaml:"full_url"` | ||
} | ||
|
||
// def initialize(path, base_url, wait_ms, timeouts) | ||
// super() | ||
// @path = path | ||
// @base_url = base_url | ||
// @wait_ms = wait_ms | ||
// @timeouts = timeouts | ||
// end | ||
|
||
// def validate | ||
// super | ||
|
||
// check :kind, type: String | ||
// check :path, type: String | ||
// check :base_url, type: String | ||
// check :wait_ms, type: Integer | ||
|
||
// check :full_url, type: String | ||
|
||
// conflicts %i[base_url full_url] | ||
// end | ||
|
||
// Represents the results of an Operation request | ||
type OpAsyncResult struct { | ||
Result Result `yaml:",inline"` | ||
|
||
Path string | ||
} | ||
|
||
// def initialize(path = nil, resource_inside_response = nil) | ||
// super() | ||
// @path = path | ||
// @resource_inside_response = resource_inside_response | ||
// end | ||
|
||
// def validate | ||
// super | ||
|
||
// check :path, type: String | ||
// end | ||
|
||
// Provides information to parse the result response to check operation | ||
// status | ||
type OpAsyncStatus struct { | ||
google.YamlValidator | ||
|
||
Path string | ||
|
||
Complete bool | ||
|
||
Allowed []bool | ||
} | ||
|
||
// def initialize(path, complete, allowed) | ||
// super() | ||
// @path = path | ||
// @complete = complete | ||
// @allowed = allowed | ||
// end | ||
|
||
// def validate | ||
// super | ||
// check :path, type: String | ||
// check :allowed, type: Array, item_type: [::String, :boolean] | ||
// end | ||
|
||
// Provides information on how to retrieve errors of the executed operations | ||
type OpAsyncError struct { | ||
google.YamlValidator | ||
|
||
Path string | ||
|
||
Message string | ||
} | ||
|
||
// def initialize(path, message) | ||
// super() | ||
// @path = path | ||
// @message = message | ||
// end | ||
|
||
// def validate | ||
// super | ||
// check :path, type: String | ||
// check :message, type: String | ||
// end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
// Copyright 2024 Google 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 api | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/magic-modules/mmv1/google" | ||
) | ||
|
||
// require 'google/extensions' | ||
// require 'google/logger' | ||
// require 'google/yaml_validator' | ||
|
||
// Represents an object that has a (mandatory) name | ||
type NamedObject struct { | ||
google.YamlValidator | ||
|
||
Name string | ||
|
||
// original value of :name before the provider override happens | ||
// same as :name if not overridden in provider | ||
ApiName string `yaml:"api_name"` | ||
} | ||
|
||
// func (n *Named) string_array(arr) { | ||
// types = arr.map(&:class).uniq | ||
// types.size == 1 && types[0] == String | ||
// } | ||
|
||
// func (n *Named) deep_merge(arr1, arr2) { | ||
// // Scopes is an array of standard strings. In which case return the | ||
// // version in the overrides. This allows scopes to be removed rather | ||
// // than allowing for a merge of the two arrays | ||
// if string_array?(arr1) | ||
// return arr2.nil? ? arr1 : arr2 | ||
// end | ||
|
||
// // Merge any elements that exist in both | ||
// result = arr1.map do |el1| | ||
// other = arr2.select { |el2| el1.name == el2.name }.first | ||
// other.nil? ? el1 : el1.merge(other) | ||
// end | ||
|
||
// // Add any elements of arr2 that don't exist in arr1 | ||
// result + arr2.reject do |el2| | ||
// arr1.any? { |el1| el2.name == el1.name } | ||
// end | ||
// } | ||
|
||
// func (n *Named) merge(other) { | ||
// result = self.class.new | ||
// instance_variables.each do |v| | ||
// result.instance_variable_set(v, instance_variable_get(v)) | ||
// end | ||
|
||
// other.instance_variables.each do |v| | ||
// if other.instance_variable_get(v).instance_of?(Array) | ||
// result.instance_variable_set(v, deep_merge(result.instance_variable_get(v), | ||
// other.instance_variable_get(v))) | ||
// else | ||
// result.instance_variable_set(v, other.instance_variable_get(v)) | ||
// end | ||
// end | ||
|
||
// result | ||
// } | ||
|
||
// func (n *Named) validate() { | ||
// super | ||
// check :name, type: String, required: true | ||
// check :api_name, type: String, default: @name | ||
// } |
Oops, something went wrong.