adding deployment of repo docker image

Change-Id: Id2e05050044d3895f07047877295f0e8265c793c
diff --git a/build.gradle b/build.gradle
index 71fedd7..ae02221 100644
--- a/build.gradle
+++ b/build.gradle
@@ -110,11 +110,11 @@
 }
 
 task buildRepoImage (dependsOn: copyLocalRepo, type: Exec) {
-    commandLine 'docker', 'build', '-t', 'cordproject/mavenrepo', '.'
+    commandLine 'docker', 'build', '-t', 'opencord/mavenrepo', '.'
 }
 
 task tagMavenRepoImage (type: Exec) {
-    commandLine 'docker', 'tag', 'cordproject/mavenrepo', "$targetReg/mavenrepo:$targetTag"
+    commandLine 'docker', 'tag', 'opencord/mavenrepo', "$targetReg/mavenrepo:$targetTag"
 }
 
 task publishMavenRepoImage (type: Exec) {
@@ -122,6 +122,35 @@
     commandLine 'docker', 'push', "$targetReg/mavenrepo:$targetTag"
 }
 
+List.metaClass.asParam = { prefix, sep ->
+  if (delegate.size() == 0) {
+    ""
+  }
+  String result = "--" + prefix + "="
+  String p = ""
+  delegate.each {
+    result += p + "${it}"
+    p = sep
+  }
+  result
+}
+
+List.metaClass.p = { value, name ->
+  if (value != null && value != "") {
+      delegate << name + "=" + value
+  } else {
+      delegate
+  }
+}
+
+List.metaClass.p = { spec ->
+  if (spec != null && spec != "") {
+      delegate += spec
+  } else {
+      delegate
+  }
+}
+
 // ~~~~~~~~~~~~~~~~~~~ Global tasks ~~~~~~~~~~~~~~~~~~~~~~~
 
 task fetch {
@@ -138,6 +167,44 @@
     dependsOn publishMavenRepoImage
 }
 
+task deploy (dependsOn: publishMavenRepoImage, type: Exec) {
+     println "Using deployment config: $deployConfig"
+    File configFile = new File(deployConfig)
+    def yaml = new Yaml()
+    def config = yaml.load(configFile.newReader())
+
+    executable = "ansible-playbook"
+    args = ["-i", config.seedServer.ip + ',']
+
+    if ( config.seedServer.user != null && config.seedServer.user != "" ) {
+        args = args << "--user=$config.seedServer.user"
+    }
+
+    def extraVars = []
+    if (config.seedServer) {
+        extraVars = extraVars.p(config.seedServer.extraVars)
+            .p(config.seedServer.password, "ansible_ssh_pass")
+            .p(config.seedServer.sudoPassword, "ansible_sudo_pass")
+            .p(config.seedServer.domain, "domain")
+    }
+
+    if (config.otherServers) {
+        extraVars = extraVars.p(config.otherServers.location, "prov_location")
+        .p(config.otherServers.rolesPath, "prov_role_path")
+        .p(config.otherServers.role, "prov_role")
+    }
+
+    if (config.docker) {
+        extraVars = extraVars.p(config.docker.registry, "docker_registry")
+            .p(config.docker.imageVersion, "docker_image_version")
+    }
+
+    def skipTags = [].p(config.seedServer.skipTags)
+
+    args = args.p(skipTags.asParam("skip-tags", ",")).p(extraVars.asParam("extra-vars", " ")) << "mavenrepo.yml"   
+}
+
+
 // Depending on the version of the apps this will either make a release or publish a snapshot
 task release (type: Exec) {
     workingDir './apps'