From 87accc631b64eec3004d8a5fd8504be7d75ae925 Mon Sep 17 00:00:00 2001
From: SMY ALTAMASH <30286162+SMYALTAMASH@users.noreply.github.com>
Date: Mon, 27 May 2019 19:12:07 +0530
Subject: [PATCH] Issue #000 player: cdn changed for player (#495)

* Issue #000 player: player cdn file name changes
---
 ansible/roles/stack-sunbird/defaults/main.yml |  1 +
 .../stack-sunbird/tasks/service_stack.yml     | 39 ++++++++++---------
 pipelines/deploy/player/Jenkinsfile           |  9 ++++-
 3 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml
index 2b038206f..573900b2b 100644
--- a/ansible/roles/stack-sunbird/defaults/main.yml
+++ b/ansible/roles/stack-sunbird/defaults/main.yml
@@ -102,3 +102,4 @@ sunbird_analytics_blob_account_name:
 sunbird_analytics_blob_account_key:
 sunbird_portal_player_cdn_enabled: 
 sunbird_portal_preview_cdn_url:
+cdn_file_path:
diff --git a/ansible/roles/stack-sunbird/tasks/service_stack.yml b/ansible/roles/stack-sunbird/tasks/service_stack.yml
index ec763dd0c..92daab1e8 100644
--- a/ansible/roles/stack-sunbird/tasks/service_stack.yml
+++ b/ansible/roles/stack-sunbird/tasks/service_stack.yml
@@ -3,42 +3,43 @@
   template: src="stack_{{service_name}}.yml" dest="/home/deployer/stack/stack_{{service_name}}.yml" mode=0644
 
 - name: Save config file
-  copy: src="{{inventory_dir}}/../../../sunbird-portal/src/app/dist/index_cdn.ejs" dest="/home/deployer/config/index_cdn.ejs" mode=0644
+  copy: src="{{cdn_file_path}}" dest="/home/deployer/config/index_cdn.ejs" mode=0644
   when: sunbird_portal_cdn_url is defined
   register: copy_file
   ignore_errors: yes
 
-- name: Remove the cdn file from  player if it's present
-  shell: docker service update --config-rm index.ejs player_player
-  when: copy_file.changed
+- debug:
+    msg: "{{copy_file}}"
+
+- name: check if player is running
+  shell: docker service ps player_player
+  become: yes
+  register: playerRunning
   ignore_errors: yes
 
+- name: Remove the cdn file from  player if it's present
+  shell: docker service update --config-rm index_cdn.ejs player_player
+  when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined
+
 - name: Remove the existing config if it is present
   shell: docker config rm index_cdn.ejs
-  when: copy_file.changed
-  ignore_errors: yes
+  when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined
 
 - name: Create the index_cdn.ejs file as a config
   shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs"
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  ignore_errors: yes
-
-- name: Create the index_cdn.ejs file as a config
-  shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs"
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  ignore_errors: yes
+  when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0
 
 - name: Deploy Player with updated player config
-  shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  register: update_player
+  shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player
+  when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0
 
 - name: Deploy stack
   shell: "docker stack deploy -c stack_{{service_name}}.yml {{service_name}} --with-registry-auth"
   args:
     chdir: /home/deployer/stack
-  when: not update_player.changed
+  register: stackDeployed
 
 - name: Inject config file for the first player deploy
-  shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs
-  when: sunbird_portal_cdn_url is defined and not update_player.changed
+  shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player
+  when: stackDeployed.changed
+
diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile
index e5ce7eb37..ec5895aad 100644
--- a/pipelines/deploy/player/Jenkinsfile
+++ b/pipelines/deploy/player/Jenkinsfile
@@ -49,7 +49,7 @@ node() {
                     }
                     // Uploading cdn assets to blob
                     ansiblePlaybook = "$currentWs/ansible/assets-upload.yml"
-                    ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+                    ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --extra-vars cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs --vault-password-file /var/lib/jenkins/secrets/vault-pass"
                     values.put('ansiblePlaybook', ansiblePlaybook)
                     values.put('ansibleExtraArgs', ansibleExtraArgs)
                     ansible_playbook_run(values)
@@ -58,7 +58,12 @@ node() {
         }
         stage('deploy') {
             ansiblePlaybook = "$currentWs/ansible/deploy.yml"
-            ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+	    if ( cdnUrl == '' ) {
+		    ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+                }
+                else {
+		    ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+		}
             values.put('ansiblePlaybook', ansiblePlaybook)
             values.put('ansibleExtraArgs', ansibleExtraArgs)
             ansible_playbook_run(values)
-- 
GitLab