1// Copyright (c) 2016, 2018, 2019, Oracle and/or its affiliates. All rights reserved.
2// Code generated. DO NOT EDIT.
3
4// Resource Manager API
5//
6// API for the Resource Manager service. Use this API to install, configure, and manage resources via the "infrastructure-as-code" model. For more information, see Overview of Resource Manager (https://docs.cloud.oracle.com/iaas/Content/ResourceManager/Concepts/resourcemanager.htm).
7//
8
9package resourcemanager
10
11import (
12	"encoding/json"
13	"github.com/oracle/oci-go-sdk/common"
14)
15
16// ConfigSource Location of the Terraform configuration.
17type ConfigSource interface {
18
19	// File path to the directory from which Terraform runs.
20	// If not specified, we use the root directory.
21	GetWorkingDirectory() *string
22}
23
24type configsource struct {
25	JsonData         []byte
26	WorkingDirectory *string `mandatory:"false" json:"workingDirectory"`
27	ConfigSourceType string  `json:"configSourceType"`
28}
29
30// UnmarshalJSON unmarshals json
31func (m *configsource) UnmarshalJSON(data []byte) error {
32	m.JsonData = data
33	type Unmarshalerconfigsource configsource
34	s := struct {
35		Model Unmarshalerconfigsource
36	}{}
37	err := json.Unmarshal(data, &s.Model)
38	if err != nil {
39		return err
40	}
41	m.WorkingDirectory = s.Model.WorkingDirectory
42	m.ConfigSourceType = s.Model.ConfigSourceType
43
44	return err
45}
46
47// UnmarshalPolymorphicJSON unmarshals polymorphic json
48func (m *configsource) UnmarshalPolymorphicJSON(data []byte) (interface{}, error) {
49
50	if data == nil || string(data) == "null" {
51		return nil, nil
52	}
53
54	var err error
55	switch m.ConfigSourceType {
56	case "ZIP_UPLOAD":
57		mm := ZipUploadConfigSource{}
58		err = json.Unmarshal(data, &mm)
59		return mm, err
60	default:
61		return *m, nil
62	}
63}
64
65//GetWorkingDirectory returns WorkingDirectory
66func (m configsource) GetWorkingDirectory() *string {
67	return m.WorkingDirectory
68}
69
70func (m configsource) String() string {
71	return common.PointerString(m)
72}
73
74// ConfigSourceConfigSourceTypeEnum Enum with underlying type: string
75type ConfigSourceConfigSourceTypeEnum string
76
77// Set of constants representing the allowable values for ConfigSourceConfigSourceTypeEnum
78const (
79	ConfigSourceConfigSourceTypeZipUpload ConfigSourceConfigSourceTypeEnum = "ZIP_UPLOAD"
80)
81
82var mappingConfigSourceConfigSourceType = map[string]ConfigSourceConfigSourceTypeEnum{
83	"ZIP_UPLOAD": ConfigSourceConfigSourceTypeZipUpload,
84}
85
86// GetConfigSourceConfigSourceTypeEnumValues Enumerates the set of values for ConfigSourceConfigSourceTypeEnum
87func GetConfigSourceConfigSourceTypeEnumValues() []ConfigSourceConfigSourceTypeEnum {
88	values := make([]ConfigSourceConfigSourceTypeEnum, 0)
89	for _, v := range mappingConfigSourceConfigSourceType {
90		values = append(values, v)
91	}
92	return values
93}
94