Package: openstack-cluster-installer
Version: 42.3.0~bpo12+1
Severity: minor
Tags: patch

When adding a new node to the OpenStack cluster there are a number of
PHP warnings which appear in the apache error log, which can potentially
be misleading when diagnosing problems.

I've attached a couple of patches:

* api.php_fix_var_names.patch

Corrects variable names which don't exist with the right ones

* slave_actions.php_mkdir_if_not_exists.patch

Check if a directory already exists before creating it

* slave_actions.php_no_append_to_nil_string.patch

The key $json["data"] does not exist so appending to it generates a
warning

--

Regards
Jim
diff --git a/src/api.php b/src/api.php
index 5d0a921a..5d5938be 100644
--- a/src/api.php
+++ b/src/api.php
@@ -544,7 +544,7 @@ function api_actions($con,$conf){
         // Time server host
         if(isset($_REQUEST["time_server_host"])){
             $safe_time_server_host = safe_fqdn("time_server_host");
-            if($safe_swift_part_power === FALSE){
+            if($safe_time_server_host === FALSE){
                 $json["status"] = "error";
                 $json["message"] = "Error: not valid time server host.";
                 return $json;
@@ -611,7 +611,7 @@ function api_actions($con,$conf){
         // VIP hostname (ie: api hostname)
         if(isset($_REQUEST["vip_hostname"])){
             $safe_vip_hostname = safe_fqdn("vip_hostname");
-            if($safe_swift_part_power === FALSE){
+            if($safe_vip_hostname === FALSE){
                 $json["status"] = "error";
                 $json["message"] = "Error: not valid time server host.";
                 return $json;
diff --git a/src/inc/slave_actions.php b/src/inc/slave_actions.php
index 910f503f..415f15a0 100644
--- a/src/inc/slave_actions.php
+++ b/src/inc/slave_actions.php
@@ -1,5 +1,11 @@
 <?php
 
+function mkdir_if_not_exists($dir, $perms = 0777){
+    if (! file_exists($dir)) {
+        mkdir($dir, $perms);
+    }
+}
+
 function cluster_register_vip($con, $conf, $cluster_id, $role_name){
     $json["status"] = "success";
     $json["message"] = "Successfuly queried API.";
@@ -584,7 +590,7 @@ function new_cluster($con, $conf, $cluster_name, $cluster_domain){
     insert_cluster_pass($con, $conf, $cluster_id, 'rally', 'db');
 
     $dir = "/var/lib/oci/clusters/$cluster_name";
-    mkdir($dir, 0700);
+    mkdir_if_not_exists($dir, 0700);
 
     // Provision an API SSL certificate
     $api_hostname = $cluster_name . "-api." . $cluster_domain;
@@ -597,7 +603,7 @@ function new_cluster($con, $conf, $cluster_name, $cluster_domain){
     ### Create an ssh key for this cluster ###
     ##########################################
     $ssh_key_dir = "/var/lib/oci/clusters/$cluster_name/ssh";
-    mkdir($ssh_key_dir, 0700);
+    mkdir_if_not_exists($ssh_key_dir, 0700);
     $cmd = "ssh-keygen -P '' -f $ssh_key_dir/id_rsa";
     $output = array();
     $return_var = 0;
@@ -1715,18 +1721,11 @@ function build_swift_ring($con, $conf, $cluster_id, $verbose="no", $initial_acco
     # First, we check if there's some swiftstore machines in the cluster, in which case
     # we do need a swift ring.
 
-    if(!is_dir("/var/lib/oci/clusters")){
-        mkdir("/var/lib/oci/clusters", 0755);
-    }
-    if(!is_dir("/var/lib/oci/clusters/$cluster_name")){
-        mkdir("/var/lib/oci/clusters/$cluster_name", 0755);
-    }
-
+    mkdir_if_not_exists("/var/lib/oci/clusters", 0755);
+    mkdir_if_not_exists("/var/lib/oci/clusters/$cluster_name", 0755);
 
     $swift_ring_path = "/var/lib/oci/clusters/$cluster_name/swift-ring";
-    if(!is_dir($swift_ring_path)){
-        mkdir($swift_ring_path, 0755);
-    }
+    mkdir_if_not_exists($swift_ring_path, 0755);
 
     if($ec_only == "no"){
         # Account
@@ -2218,15 +2217,9 @@ function slave_install_os($con, $conf, $machine_id, $install_cmd){
     ### Create a folder for filesystem template of host ###
     #######################################################
     $template_path = "/var/lib/oci/clusters/$cluster_name/$machine_hostname";
-    if(!is_dir("/var/lib/oci/clusters")){
-        mkdir("/var/lib/oci/clusters", 0755);
-    }
-    if(!is_dir("/var/lib/oci/clusters/$cluster_name")){
-        mkdir("/var/lib/oci/clusters/$cluster_name", 0755);
-    }
-    if(!is_dir("/var/lib/oci/clusters/$cluster_name/$machine_hostname")){
-        mkdir("/var/lib/oci/clusters/$cluster_name/$machine_hostname", 0755);
-    }
+    mkdir_if_not_exists("/var/lib/oci/clusters", 0755);
+    mkdir_if_not_exists("/var/lib/oci/clusters/$cluster_name", 0755);
+    mkdir_if_not_exists("/var/lib/oci/clusters/$cluster_name/$machine_hostname", 0755);
 
     #########################
     ### Manage /etc/hosts ###
@@ -2372,19 +2365,19 @@ function slave_install_os($con, $conf, $machine_id, $install_cmd){
         }
     }
 
-    mkdir("$template_path/oci-in-target");
-    mkdir("$template_path/oci-in-target/etc");
-    mkdir("$template_path/oci-in-target/etc/oci");
+    mkdir_if_not_exists("$template_path/oci-in-target");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc/oci");
 
     ##############################
     ### Copy the root CA files ###
     ##############################
     # Note that later on, the openstack-debian-images script will run update-ca-certificates
     # We also transport these through puppet, but it's nicer to have them at setup time.
-    mkdir("$template_path/oci-in-target/usr");
-    mkdir("$template_path/oci-in-target/usr/share");
-    mkdir("$template_path/oci-in-target/usr/share/ca-certificates");
-    mkdir("$template_path/oci-in-target/usr/share/ca-certificates/oci");
+    mkdir_if_not_exists("$template_path/oci-in-target/usr");
+    mkdir_if_not_exists("$template_path/oci-in-target/usr/share");
+    mkdir_if_not_exists("$template_path/oci-in-target/usr/share/ca-certificates");
+    mkdir_if_not_exists("$template_path/oci-in-target/usr/share/ca-certificates/oci");
     copy("$ca_pem_dir/oci-pki-root-ca.pem", "$template_path/oci-in-target/usr/share/ca-certificates/oci/OCI_1_selfsigned-root-ca.crt");
     copy("$ca_pem_dir/oci-pki-oci-ca.pem", "$template_path/oci-in-target/usr/share/ca-certificates/oci/OCI_2_oci-ca.crt");
 
@@ -2420,7 +2413,7 @@ function slave_install_os($con, $conf, $machine_id, $install_cmd){
     }
 
     if($machine_role == "swiftstore" || $machine_role == "swiftproxy"){
-        mkdir("$template_path/oci-in-target/etc/swift");
+        mkdir_if_not_exists("$template_path/oci-in-target/etc/swift");
         copy("$swift_ring_path/account.ring.gz", "$template_path/oci-in-target/etc/swift/account.ring.gz");
         copy("$swift_ring_path/container.ring.gz", "$template_path/oci-in-target/etc/swift/container.ring.gz");
         copy("$swift_ring_path/object.ring.gz", "$template_path/oci-in-target/etc/swift/object.ring.gz");
@@ -2484,8 +2477,8 @@ https://salsa.debian.org/openstack-team/debian/openstack-cluster-installer
     ############################
     $ret = get_machine_management_network_ip($con, $conf, $machine_id);
     $ip = $ret["data"];
-    mkdir("$template_path/oci-in-target/etc");
-    mkdir("$template_path/oci-in-target/etc/oci");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc/oci");
     file_put_contents("$template_path/oci-in-target/etc/oci/my-ip", $ip);
     file_put_contents("$template_path/oci-in-target/etc/oci/my-role", $machine_role);
 
@@ -2525,7 +2518,7 @@ https://salsa.debian.org/openstack-team/debian/openstack-cluster-installer
     }
 
     if($machine_role == "compute"){
-        mkdir("$template_path/oci-in-target/etc/modprobe.d");
+        mkdir_if_not_exists("$template_path/oci-in-target/etc/modprobe.d");
         if(($machine["nested_virt"] == "yes") ||  ($machine["nested_virt"] == "cluster_value" && $cluster["nested_virt"] == "yes")){
             file_put_contents("$template_path/oci-in-target/etc/modprobe.d/kvm.conf", "options kvm_intel nested=1");
             file_put_contents("$template_path/oci-in-target/etc/modprobe.d/kvm_amd.conf", "options kvm_amd nested=1");
@@ -2557,8 +2550,8 @@ https://salsa.debian.org/openstack-team/debian/openstack-cluster-installer
     if($machine_role == "controller"){
         $ssh_key_dir = "/var/lib/oci/clusters/$cluster_name/ssh";
         if(file_exists("$ssh_key_dir/id_rsa")){
-            mkdir("$template_path/oci-in-target/root");
-            mkdir("$template_path/oci-in-target/root/.ssh", 0700);
+            mkdir_if_not_exists("$template_path/oci-in-target/root");
+            mkdir_if_not_exists("$template_path/oci-in-target/root/.ssh", 0700);
             copy("$ssh_key_dir/id_rsa", "$template_path/oci-in-target/root/.ssh/id_rsa");
             chmod("$template_path/oci-in-target/root/.ssh/id_rsa", 0600);
             if(file_exists("$ssh_key_dir/id_rsa.pub")){
@@ -2573,8 +2566,8 @@ https://salsa.debian.org/openstack-team/debian/openstack-cluster-installer
     # Please note that what's below is also maintained with puppet
     # in puppet/manifests/generic.pp. Make sure to modify both here
     # and there if you're adding stuff.
-    mkdir("$template_path/oci-in-target/etc/facter");
-    mkdir("$template_path/oci-in-target/etc/facter/facts.d");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc/facter");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc/facter/facts.d");
 
     $ret = gen_oci_facts($con, $conf, $machine_id);
     if($ret["status"] != "success"){
@@ -2604,8 +2597,8 @@ https://salsa.debian.org/openstack-team/debian/openstack-cluster-installer
     ### Create signed SSH host keys for this machine ###
     ### and copy the CA, so we can auth all servers  ###
     ####################################################
-    mkdir("$template_path/oci-in-target/etc");
-    mkdir("$template_path/oci-in-target/etc/ssh");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc");
+    mkdir_if_not_exists("$template_path/oci-in-target/etc/ssh");
 
     # Copy the CA
     copy("/var/lib/oci/clusters/$cluster_name/ssh/ca.pub", "$template_path/oci-in-target/etc/ssh/ca.pub");
diff --git a/src/inc/slave_actions.php b/src/inc/slave_actions.php
index 910f503f..762b3a05 100644
--- a/src/inc/slave_actions.php
+++ b/src/inc/slave_actions.php
@@ -2731,7 +2731,7 @@ function oci_install_machine($con, $conf, $machine_id){
         $json["message"] = "Error while calculating installation command line for host $safe_machine_serial: ".$slave_install_return["message"];
         return $json;
     }
-    $json["data"] .= "Running: ". $slave_install_return["cmd"];
+    $json["data"] = "Running: ". $slave_install_return["cmd"];
     slave_install_os($con, $conf, $machine_id, $slave_install_return["cmd"]);
 
     return $json;

Reply via email to