ilya musayev created CLOUDSTACK-2053:
----------------------------------------

             Summary: [BUG] userdata.sh on router VM fixes for if else logic 
and missing meta-data
                 Key: CLOUDSTACK-2053
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-2053
             Project: CloudStack
          Issue Type: Bug
      Security Level: Public (Anyone can view this level - this is the default.)
          Components: Network Controller
    Affects Versions: 4.0.0, 4.1.0, 4.2.0
         Environment: VSphere 5.0 and ACS 4.1
            Reporter: ilya musayev
            Assignee: ilya musayev
             Fix For: 4.1.0, 4.2.0


Logic in userdata.sh for bash if / else is not optimal and is based on exit 
codes VS using native "if grep" support. Current logic is causing multiple 
redundant entries in .htaccess files.
Moreover, we are missing the meta-data rewrite rule in .htaccess file  for 
cloud-init/boto component to configure the vm.

Details:

Instead of doing: 

  grep -F `echo $entry` $htaccessFile
  
  if [ $? -gt 0 ]; then 
    echo -e $entry >> $htaccessFile; 
  fi
  result=$?
  
  if [ $result -eq 0 ]; then
    entry="Options -Indexes\\nOrder Deny,Allow\\nDeny from all\\nAllow from 
$vmIp"
    htaccessFolder="/var/www/html/$folder/$vmIp"
    htaccessFile=$htaccessFolder/.htaccess
    mkdir -p $htaccessFolder
    echo -e $entry > $htaccessFile
    result=$?
  fi

We should do:

  if ! grep -Fq "$entry" $htaccessFile
        then 
                echo -e $entry >> $htaccessFile; 
                result=$?
        else 
                entry="Options -Indexes\\nOrder Deny,Allow\\nDeny from 
all\\nAllow from $vmIp"
                htaccessFolder="/var/www/html/$folder/$vmIp"
                htaccessFile=$htaccessFolder/.htaccess
                mkdir -p $htaccessFolder
                echo "echo -e $entry \> $htaccessFile"
                echo -e $entry > $htaccessFile
                result=$?
  fi

I'm still keeping the "result=$?", because the logic is based on exit codes - 
in other places, however, it is unnecessary.

Also, we are missing Rewrite rule in .htaccess file:

RewriteRule ^meta-data/$ ../metadata/%{REMOTE_ADDR}/meta-data [L,NC,QSA] 
RewriteRule ^meta-data/(.*)$ ../metadata/%{REMOTE_ADDR}/$1 [L,NC,QSA]

As boto is looking for meta-data under /var/www/html/latest, but cant find it 
and fails to proceed.

I will add a function to check if entry exists, and if not, append.

Overall, this fix will keep the .htaccess file much cleaner with only 1 entry 
per file and dir.

Regards
ilya

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to