1// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. 2// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. 3// Code generated. DO NOT EDIT. 4 5// Core Services API 6// 7// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), 8// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and 9// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API 10// to manage resources such as virtual cloud networks (VCNs), compute instances, and 11// block storage volumes. 12// 13 14package core 15 16import ( 17 "encoding/json" 18 "github.com/oracle/oci-go-sdk/common" 19) 20 21// CreateInstanceConfigurationBase Creation details for an instance configuration. 22type CreateInstanceConfigurationBase interface { 23 24 // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment 25 // containing the instance configuration. 26 GetCompartmentId() *string 27 28 // Defined tags for this resource. Each key is predefined and scoped to a 29 // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). 30 // Example: `{"Operations": {"CostCenter": "42"}}` 31 GetDefinedTags() map[string]map[string]interface{} 32 33 // A user-friendly name for the instance configuration. Does not have to be unique, 34 // and it's changeable. Avoid entering confidential information. 35 GetDisplayName() *string 36 37 // Free-form tags for this resource. Each tag is a simple key-value pair with no 38 // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). 39 // Example: `{"Department": "Finance"}` 40 GetFreeformTags() map[string]string 41} 42 43type createinstanceconfigurationbase struct { 44 JsonData []byte 45 CompartmentId *string `mandatory:"true" json:"compartmentId"` 46 DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` 47 DisplayName *string `mandatory:"false" json:"displayName"` 48 FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` 49 Source string `json:"source"` 50} 51 52// UnmarshalJSON unmarshals json 53func (m *createinstanceconfigurationbase) UnmarshalJSON(data []byte) error { 54 m.JsonData = data 55 type Unmarshalercreateinstanceconfigurationbase createinstanceconfigurationbase 56 s := struct { 57 Model Unmarshalercreateinstanceconfigurationbase 58 }{} 59 err := json.Unmarshal(data, &s.Model) 60 if err != nil { 61 return err 62 } 63 m.CompartmentId = s.Model.CompartmentId 64 m.DefinedTags = s.Model.DefinedTags 65 m.DisplayName = s.Model.DisplayName 66 m.FreeformTags = s.Model.FreeformTags 67 m.Source = s.Model.Source 68 69 return err 70} 71 72// UnmarshalPolymorphicJSON unmarshals polymorphic json 73func (m *createinstanceconfigurationbase) UnmarshalPolymorphicJSON(data []byte) (interface{}, error) { 74 75 if data == nil || string(data) == "null" { 76 return nil, nil 77 } 78 79 var err error 80 switch m.Source { 81 case "NONE": 82 mm := CreateInstanceConfigurationDetails{} 83 err = json.Unmarshal(data, &mm) 84 return mm, err 85 case "INSTANCE": 86 mm := CreateInstanceConfigurationFromInstanceDetails{} 87 err = json.Unmarshal(data, &mm) 88 return mm, err 89 default: 90 return *m, nil 91 } 92} 93 94//GetCompartmentId returns CompartmentId 95func (m createinstanceconfigurationbase) GetCompartmentId() *string { 96 return m.CompartmentId 97} 98 99//GetDefinedTags returns DefinedTags 100func (m createinstanceconfigurationbase) GetDefinedTags() map[string]map[string]interface{} { 101 return m.DefinedTags 102} 103 104//GetDisplayName returns DisplayName 105func (m createinstanceconfigurationbase) GetDisplayName() *string { 106 return m.DisplayName 107} 108 109//GetFreeformTags returns FreeformTags 110func (m createinstanceconfigurationbase) GetFreeformTags() map[string]string { 111 return m.FreeformTags 112} 113 114func (m createinstanceconfigurationbase) String() string { 115 return common.PointerString(m) 116} 117 118// CreateInstanceConfigurationBaseSourceEnum Enum with underlying type: string 119type CreateInstanceConfigurationBaseSourceEnum string 120 121// Set of constants representing the allowable values for CreateInstanceConfigurationBaseSourceEnum 122const ( 123 CreateInstanceConfigurationBaseSourceNone CreateInstanceConfigurationBaseSourceEnum = "NONE" 124 CreateInstanceConfigurationBaseSourceInstance CreateInstanceConfigurationBaseSourceEnum = "INSTANCE" 125) 126 127var mappingCreateInstanceConfigurationBaseSource = map[string]CreateInstanceConfigurationBaseSourceEnum{ 128 "NONE": CreateInstanceConfigurationBaseSourceNone, 129 "INSTANCE": CreateInstanceConfigurationBaseSourceInstance, 130} 131 132// GetCreateInstanceConfigurationBaseSourceEnumValues Enumerates the set of values for CreateInstanceConfigurationBaseSourceEnum 133func GetCreateInstanceConfigurationBaseSourceEnumValues() []CreateInstanceConfigurationBaseSourceEnum { 134 values := make([]CreateInstanceConfigurationBaseSourceEnum, 0) 135 for _, v := range mappingCreateInstanceConfigurationBaseSource { 136 values = append(values, v) 137 } 138 return values 139} 140