1// Copyright (c) 2016, 2018, 2019, Oracle and/or its affiliates. All rights reserved.
2// Code generated. DO NOT EDIT.
3
4// Core Services API
5//
6// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm),
7// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and
8// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API
9// to manage resources such as virtual cloud networks (VCNs), compute instances, and
10// block storage volumes.
11//
12
13package core
14
15import (
16	"github.com/oracle/oci-go-sdk/common"
17)
18
19// Drg A dynamic routing gateway (DRG), which is a virtual router that provides a path for private
20// network traffic between your VCN and your existing network. You use it with other Networking
21// Service components to create an IPSec VPN or a connection that uses
22// Oracle Cloud Infrastructure FastConnect. For more information, see
23// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm).
24// To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized,
25// talk to an administrator. If you're an administrator who needs to write policies to give users access, see
26// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm).
27// **Warning:** Oracle recommends that you avoid using any confidential information when you
28// supply string values using the API.
29type Drg struct {
30
31	// The OCID of the compartment containing the DRG.
32	CompartmentId *string `mandatory:"true" json:"compartmentId"`
33
34	// The DRG's Oracle ID (OCID).
35	Id *string `mandatory:"true" json:"id"`
36
37	// The DRG's current state.
38	LifecycleState DrgLifecycleStateEnum `mandatory:"true" json:"lifecycleState"`
39
40	// Defined tags for this resource. Each key is predefined and scoped to a
41	// namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm).
42	// Example: `{"Operations": {"CostCenter": "42"}}`
43	DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"`
44
45	// A user-friendly name. Does not have to be unique, and it's changeable.
46	// Avoid entering confidential information.
47	DisplayName *string `mandatory:"false" json:"displayName"`
48
49	// Free-form tags for this resource. Each tag is a simple key-value pair with no
50	// predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm).
51	// Example: `{"Department": "Finance"}`
52	FreeformTags map[string]string `mandatory:"false" json:"freeformTags"`
53
54	// The date and time the DRG was created, in the format defined by RFC3339.
55	// Example: `2016-08-25T21:10:29.600Z`
56	TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"`
57}
58
59func (m Drg) String() string {
60	return common.PointerString(m)
61}
62
63// DrgLifecycleStateEnum Enum with underlying type: string
64type DrgLifecycleStateEnum string
65
66// Set of constants representing the allowable values for DrgLifecycleStateEnum
67const (
68	DrgLifecycleStateProvisioning DrgLifecycleStateEnum = "PROVISIONING"
69	DrgLifecycleStateAvailable    DrgLifecycleStateEnum = "AVAILABLE"
70	DrgLifecycleStateTerminating  DrgLifecycleStateEnum = "TERMINATING"
71	DrgLifecycleStateTerminated   DrgLifecycleStateEnum = "TERMINATED"
72)
73
74var mappingDrgLifecycleState = map[string]DrgLifecycleStateEnum{
75	"PROVISIONING": DrgLifecycleStateProvisioning,
76	"AVAILABLE":    DrgLifecycleStateAvailable,
77	"TERMINATING":  DrgLifecycleStateTerminating,
78	"TERMINATED":   DrgLifecycleStateTerminated,
79}
80
81// GetDrgLifecycleStateEnumValues Enumerates the set of values for DrgLifecycleStateEnum
82func GetDrgLifecycleStateEnumValues() []DrgLifecycleStateEnum {
83	values := make([]DrgLifecycleStateEnum, 0)
84	for _, v := range mappingDrgLifecycleState {
85		values = append(values, v)
86	}
87	return values
88}
89