from org.joda.time import DateTime

longString = ' very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long string'

def deployApplication(appId, envId):
    deplApp = deployment.prepareInitial(appId, envId)
    deplApp = deployment.prepareAutoDeployeds(deplApp)
    taskId = deployment.createDeployTask(deplApp).id
    deployit.startTaskAndWait(taskId)

# Preparing tasks for task monitor
depl1 = deployment.prepareInitial('Applications/ExampleApp/1.0', 'Environments/Staging')
depl1 = deployment.prepareAutoDeployeds(depl1)
taskId = deployment.createDeployTask(depl1).id
deployit.assignTask(taskId, 'matt')

host4 = repository.read('Infrastructure/host4')
controlTask1 = deployit.prepareControlTask(host4, 'checkConnection')
deployit.createControlTask(controlTask1)

host5 = repository.read('Infrastructure/host5')
controlTask2 = deployit.prepareControlTask(host5, 'checkConnection')
taskId = deployit.createControlTask(controlTask2)
deployit.startTask(taskId)

scheduled1 = deployment.prepareInitial('Applications/ToSchedule/1.0', 'Environments/Staging')
scheduled1 = deployment.prepareAutoDeployeds(scheduled1)
scheduledTask1 = deployment.createDeployTask(scheduled1)
scheduledTask1 = task2.schedule(scheduledTask1.id, DateTime().plusDays(2))

deployApplication('Applications/TestApp/1.0', 'Environments/Staging')
deployApplication('Applications/AppForUpdateScenario/1.0', 'Environments/Staging')
deployApplication('Applications/DependentTestApp/1.0', 'Environments/Staging')
deployApplication('Applications/EmptyTestApp/1.0', 'Environments/Staging')
deployApplication('Applications/CiWith%1/1.0', 'Environments/Staging')
deployApplication('Applications/CiWith%%12/1.0', 'Environments/Staging')
deployApplication('Applications/Long"Script"App/1.0', 'Environments/Staging')
deployApplication('Applications/TestApp/1.0', 'Environments/MultiHostEnv')
deployApplication("Applications/ZApp%s/1.0" % longString, 'Environments/TestDirEnv/Env2')
deployApplication('Applications/AppForUpdateScenario/1.0', 'Environments/EnvForUpdateScenario')
deployApplication('Applications/AppForSandbox/1.0', 'Environments/Sandbox')

for i in range(1, 10):
    deployApplication("Applications/ToDeploy/AppToDeploy%s/1.0" % i, 'Environments/Staging')

for i in range(1, 12):
    deployApplication('Applications/AppForSameHostScenario/1.0', "Environments/EnvsWithSameHost/EnvWithSameHost%s" % i)

# Control tasks
for i in range(1, 5):
    host = repository.read("Infrastructure/host" + str(i))
    control = deployit.prepareControlTask(host, "checkConnection")
    taskId = deployit.createControlTask(control)
    deployit.startTaskAndWait(taskId)

deployApplication('Applications/AppWithReleasePipeline/1.0', 'Environments/Staging')
