repository.create(factory.configurationItem('Applications/ProvisioningPackage', 'udm.Application'))
repository.create(factory.configurationItem('Applications/ProvisioningPackage/1.0', 'udm.ProvisioningPackage'))

provisioningSpec = repository.create(
    factory.configurationItem('Applications/ProvisioningPackage/1.0/Spec', 'aws.ec2.InstanceSpec',
                              {'amiId': 'ami-d91be1ae', 'region': 'eu-west-1', 'securityGroup': 'default',
                               'instanceType': 'm1.small'}))


repository.create(
    factory.configurationItem('Applications/ProvisioningPackage/1.0/SshHost', 'template.overthere.SshHost',
                              {'os': 'UNIX', 'connectionType': 'SUDO', 'address': '{{%publicHostname%}}',
                               'username': 'ubuntu'}))

repository.create(
    factory.configurationItem('Applications/ProvisioningPackage/1.0/SshHost/Tomcat', 'template.tomcat.Server',
                              {'home': '/opt/apache-tomcat', 'startCommand': 'sh bin/startup.sh',
                               'stopCommand': 'sh bin/shutdown.sh', 'startWaitTime': 10, 'stopWaitTime': 10}))

provisioningSpec.boundTemplates = ['Applications/ProvisioningPackage/1.0/SshHost']
repository.update(provisioningSpec)

repository.create(
    factory.configurationItem('Applications/ProvisioningPackage/1.0/Spec/Manifest', 'puppet.provisioner.Manifest',
                              {'hostTemplate': 'Applications/ProvisioningPackage/1.0/SshHost',
                               'fileUri': 'http://google.com'}))

repository.create(factory.configurationItem('Applications/ProvisioningPackage/1.0/Spec/puppetlabs-tomcat',
                                            'puppet.provisioner.Module', {'name': 'puppetlabs-tomcat',
                                                                          'hostTemplate': 'Applications/ProvisioningPackage/1.0/SshHost'}))

repository.create(factory.configurationItem('Applications/ProvisioningPackage/1.0/Spec/puppetlabs-java',
                                            'puppet.provisioner.Module', {'name': 'puppetlabs-java',
                                                                          'hostTemplate': 'Applications/ProvisioningPackage/1.0/SshHost'}))

repository.create(factory.configurationItem('Infrastructure/AwsCloud', 'aws.Cloud',
                                            {'accesskey': 'accesskey', 'accessSecret': 'accessSecret'}))
awsEc2CloudHost = repository.create(factory.configurationItem('Infrastructure/AwsEc2Cloud', 'aws.Cloud',
                                                              {'os': 'UNIX', 'accesskey': 'accesskey',
                                                               'accessSecret': 'accessSecret'}))
repository.create(
    factory.configurationItem('Environments/AwsEc2Environment', 'udm.Environment', {'members': [awsEc2CloudHost.id]}))
