package stacks

// ValidJSONTemplate is a valid OpenStack Heat template in JSON format
const ValidJSONTemplate = `
{
  "heat_template_version": "2014-10-16",
  "parameters": {
    "flavor": {
      "default": "debian2G",
      "description": "Flavor for the server to be created",
      "hidden": true,
      "type": "string"
    }
  },
  "resources": {
    "test_server": {
      "properties": {
        "flavor": "2 GB General Purpose v1",
        "image": "Debian 7 (Wheezy) (PVHVM)",
        "name": "test-server"
      },
      "type": "OS::Nova::Server"
    }
  }
}
`

// ValidYAMLTemplate is a valid OpenStack Heat template in YAML format
const ValidYAMLTemplate = `
heat_template_version: 2014-10-16
parameters:
  flavor:
    type: string
    description: Flavor for the server to be created
    default: debian2G
    hidden: true
resources:
  test_server:
    type: "OS::Nova::Server"
    properties:
      name: test-server
      flavor: 2 GB General Purpose v1
      image: Debian 7 (Wheezy) (PVHVM)
`

// InvalidTemplateNoVersion is an invalid template as it has no `version` section
const InvalidTemplateNoVersion = `
parameters:
  flavor:
    type: string
    description: Flavor for the server to be created
    default: debian2G
    hidden: true
resources:
  test_server:
    type: "OS::Nova::Server"
    properties:
      name: test-server
      flavor: 2 GB General Purpose v1
      image: Debian 7 (Wheezy) (PVHVM)
`

// ValidJSONEnvironment is a valid environment for a stack in JSON format
const ValidJSONEnvironment = `
{
	"parameters": {
		"user_key": "userkey"
	},
	"resource_registry": {
		"My::WP::Server": "file:///home/shardy/git/heat-templates/hot/F18/WordPress_Native.yaml",
		"OS::Quantum*": "OS::Neutron*",
		"AWS::CloudWatch::Alarm": "file:///etc/heat/templates/AWS_CloudWatch_Alarm.yaml",
		"OS::Metering::Alarm": "OS::Ceilometer::Alarm",
		"AWS::RDS::DBInstance": "file:///etc/heat/templates/AWS_RDS_DBInstance.yaml",
		"resources": {
			"my_db_server": {
				"OS::DBInstance": "file:///home/mine/all_my_cool_templates/db.yaml"
			},
			"my_server": {
				"OS::DBInstance": "file:///home/mine/all_my_cool_templates/db.yaml",
				"hooks": "pre-create"
			},
			"nested_stack": {
				"nested_resource": {
					"hooks": "pre-update"
				},
				"another_resource": {
					"hooks": [
						"pre-create",
						"pre-update"
					]
				}
			}
		}
	}
}
`

// ValidYAMLEnvironment is a valid environment for a stack in YAML format
const ValidYAMLEnvironment = `
parameters:
  user_key: userkey
resource_registry:
  My::WP::Server: file:///home/shardy/git/heat-templates/hot/F18/WordPress_Native.yaml
  # allow older templates with Quantum in them.
  "OS::Quantum*": "OS::Neutron*"
  # Choose your implementation of AWS::CloudWatch::Alarm
  "AWS::CloudWatch::Alarm": "file:///etc/heat/templates/AWS_CloudWatch_Alarm.yaml"
  #"AWS::CloudWatch::Alarm": "OS::Heat::CWLiteAlarm"
  "OS::Metering::Alarm": "OS::Ceilometer::Alarm"
  "AWS::RDS::DBInstance": "file:///etc/heat/templates/AWS_RDS_DBInstance.yaml"
  resources:
    my_db_server:
      "OS::DBInstance": file:///home/mine/all_my_cool_templates/db.yaml
    my_server:
      "OS::DBInstance": file:///home/mine/all_my_cool_templates/db.yaml
      hooks: pre-create
    nested_stack:
      nested_resource:
        hooks: pre-update
      another_resource:
        hooks: [pre-create, pre-update]
`

// InvalidEnvironment is an invalid environment as it has an extra section called `resources`
const InvalidEnvironment = `
parameters:
	flavor:
		type: string
		description: Flavor for the server to be created
		default: debian2G
		hidden: true
resources:
	test_server:
		type: "OS::Nova::Server"
		properties:
			name: test-server
			flavor: 2 GB General Purpose v1
			image: Debian 7 (Wheezy) (PVHVM)
parameter_defaults:
	KeyName: heat_key
`

// ValidJSONEnvironmentParsed is the expected parsed version of ValidJSONEnvironment
var ValidJSONEnvironmentParsed = map[string]any{
	"parameters": map[string]any{
		"user_key": "userkey",
	},
	"resource_registry": map[string]any{
		"My::WP::Server":         "file:///home/shardy/git/heat-templates/hot/F18/WordPress_Native.yaml",
		"OS::Quantum*":           "OS::Neutron*",
		"AWS::CloudWatch::Alarm": "file:///etc/heat/templates/AWS_CloudWatch_Alarm.yaml",
		"OS::Metering::Alarm":    "OS::Ceilometer::Alarm",
		"AWS::RDS::DBInstance":   "file:///etc/heat/templates/AWS_RDS_DBInstance.yaml",
		"resources": map[string]any{
			"my_db_server": map[string]any{
				"OS::DBInstance": "file:///home/mine/all_my_cool_templates/db.yaml",
			},
			"my_server": map[string]any{
				"OS::DBInstance": "file:///home/mine/all_my_cool_templates/db.yaml",
				"hooks":          "pre-create",
			},
			"nested_stack": map[string]any{
				"nested_resource": map[string]any{
					"hooks": "pre-update",
				},
				"another_resource": map[string]any{
					"hooks": []any{
						"pre-create",
						"pre-update",
					},
				},
			},
		},
	},
}

// ValidJSONTemplateParsed is the expected parsed version of ValidJSONTemplate
var ValidJSONTemplateParsed = map[string]any{
	"heat_template_version": "2014-10-16",
	"parameters": map[string]any{
		"flavor": map[string]any{
			"default":     "debian2G",
			"description": "Flavor for the server to be created",
			"hidden":      true,
			"type":        "string",
		},
	},
	"resources": map[string]any{
		"test_server": map[string]any{
			"properties": map[string]any{
				"flavor": "2 GB General Purpose v1",
				"image":  "Debian 7 (Wheezy) (PVHVM)",
				"name":   "test-server",
			},
			"type": "OS::Nova::Server",
		},
	},
}
