Rebase: p/fuel-library: Update after 96da5b4a. 21/14121/3
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Fri, 13 May 2016 17:37:20 +0000 (19:37 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Mon, 16 May 2016 12:01:02 +0000 (12:01 +0000)
Refresh patches after:
"Move openstack specific tasks to their own folder structure"

NOTE: The qemu-kvm change patch
(0003-Make-qemu-kvm-architecture-aware.patch) only affects
RedHat systems, so it is optional, at least for the current stage.

[1] https://github.com/openstack/fuel-library/commit/
    96da5b4a1eb82a76fb416d93f5249dc32e2499f2

Change-Id: Ibd1fd3f7e45d7947c90336bbe7e2ace101b5802b

patches/fuel-library/0003-Make-qemu-kvm-architecture-aware.patch
patches/fuel-library/0004-Make-TestVM-creation-architecture-aware.patch
patches/fuel-library/0005-Disable-usb-tablet-for-aarch64.patch
patches/fuel-library/0007-m1.micro-Increase-profile-RAM-size-to-128MB.patch
patches/fuel-library/0008-Increase-upload_cirros-timeout-for-multi-image.patch
patches/fuel-library/0009-Update-vga-console-defaults-for-armv7-and-aarch64.patch
patches/fuel-library/0010-nova-Fix-inject-for-direct-boot-with-part-table.patch
patches/fuel-library/0011-ceph-Fix-obsolete-XFS-mount-param-delaylog.patch
patches/fuel-library/0012-ceilometer-Fix-libvirt-bin-group-name-for-armband.patch

index 01cbdf8..25ec082 100644 (file)
@@ -3,23 +3,20 @@ Date: Wed, 24 Feb 2016 20:07:06 +0100
 Subject: [PATCH] Make qemu-kvm architecture aware
 
 ---
- deployment/puppet/openstack/manifests/compute.pp | 9 +++++++--
+ deployment/puppet/openstack_tasks/manifests/roles/compute.pp | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
-diff --git a/deployment/puppet/openstack/manifests/compute.pp b/deployment/puppet/openstack/manifests/compute.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
 index b2339bc..ca1b2c4 100644
---- a/deployment/puppet/openstack/manifests/compute.pp
-+++ b/deployment/puppet/openstack/manifests/compute.pp
-@@ -169,10 +169,15 @@ class openstack::compute (
-         before  => Augeas['libvirt-conf'],
-       }
+--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+@@ -169,7 +169,12 @@ class openstack_tasks::compute (
+       # From legacy libvirt.pp
 +      # Guard against some exotic distros with their `uname -m`
 +      $arch = $::architecture ? {
 +        /(arm64|aarch64)/ => 'aarch64',
 +        default           => 'x86_64',
 +      }
-       # From legacy libvirt.pp
        exec { 'symlink-qemu-kvm':
 -        command => '/bin/ln -sf /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64',
 -        creates => '/usr/bin/qemu-system-x86_64',
index b9a8ed1..016d1f1 100644 (file)
@@ -6,7 +6,7 @@ This depends on cirros-testvm package to contain both amd64 and arm64
 images.
 ---
  deployment/puppet/openstack/manifests/img/cirros.pp           |  8 ++++++--
.../puppet/osnailyfacter/modular/generate_vms/generate_vms.pp | 11 +++++++++++
puppet/osnailyfacter/manifests/generate_vms/vm_config.pp      | 11 +++++++++++
  deployment/puppet/osnailyfacter/templates/vm_libvirt.erb      |  9 ++++++++-
  files/fuel-migrate/fuel-migrate                               |  5 ++++-
  4 files changed, 29 insertions(+), 4 deletions(-)
@@ -43,10 +43,10 @@ index 84e202e..cff06e0 100644
      unless => "/usr/bin/glance -N ${os_auth_url} -T ${os_tenant_name} -I ${os_username} -K ${os_password} index && (/usr/bin/glance -N ${os_auth_url} -T ${os_tenant_name} -I ${os_username} -K ${os_password} index | grep ${img_name})",
  
      }
-diff --git a/deployment/puppet/osnailyfacter/modular/generate_vms/generate_vms.pp b/deployment/puppet/osnailyfacter/modular/generate_vms/generate_vms.pp
+diff --git a/deployment/puppet/osnailyfacter/manifests/generate_vms/vm_config.pp b/deployment/puppet/osnailyfacter/manifests/generate_vms/vm_config.pp
 index 6d5426a..da5954e 100644
---- a/deployment/puppet/osnailyfacter/modular/generate_vms/generate_vms.pp
-+++ b/deployment/puppet/osnailyfacter/modular/generate_vms/generate_vms.pp
+--- a/deployment/puppet/osnailyfacter/manifests/generate_vms/vm_config.pp
++++ b/deployment/puppet/osnailyfacter/manifests/generate_vms/vm_config.pp
 @@ -11,6 +11,17 @@ define vm_config {
    $details = $name
    $id = $details['id']
index 37b4234..bab44b5 100644 (file)
@@ -3,28 +3,23 @@ Date: Tue, 15 Mar 2016 11:33:52 +0100
 Subject: [PATCH] Disable usb tablet for aarch64
 
 ---
- deployment/puppet/openstack/manifests/compute.pp | 12 ++++++++++++
+ deployment/puppet/openstack_tasks/manifests/roles/compute.pp | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
-diff --git a/deployment/puppet/openstack/manifests/compute.pp b/deployment/puppet/openstack/manifests/compute.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
 index ca1b2c4..c0349dc 100644
---- a/deployment/puppet/openstack/manifests/compute.pp
-+++ b/deployment/puppet/openstack/manifests/compute.pp
-@@ -316,6 +316,10 @@ class openstack::compute (
+--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+@@ -316,3 +316,7 @@ class openstack::compute (
    nova_config {
-     'libvirt/live_migration_flag':  value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST';
-     'libvirt/block_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_NON_SHARED_INC';
 +    'libvirt/use_usb_tablet': value => $::architecture ? {
 +        /(arm64|aarch64)/ => false,
 +        default           => true,
 +    }
-   }
-   nova_config {
-@@ -364,6 +368,14 @@ class openstack::compute (
-     # Workaround for bug LP #1469308
-     # also service name for Ubuntu and Centos is the same.
-     libvirt_service_name     => "libvirtd",
+     'libvirt/live_migration_flag':  value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST';
+     'libvirt/block_migration_flag': value => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_NON_SHARED_INC';
+@@ -364,3 +368,11 @@ class openstack::compute (
+     libvirt_service_name                       => $::nova::params::libvirt_service_name,
 +  } ->
 +  package { 'vgabios':
 +    ensure => present;
@@ -35,4 +30,3 @@ index ca1b2c4..c0349dc 100644
 +    replace => false,
    }
  
-   # From legacy libvirt.pp
index 8253aca..81377ad 100644 (file)
@@ -5,33 +5,31 @@ Subject: [PATCH] m1.micro: Increase profile RAM size to 128MB.
 TestVM (cirros) on aarch64 requires more than 64MB RAM.
 Keep profiles uniform across all archs.
 ---
- .../osnailyfacter/modular/openstack-controller/openstack-controller.pp  | 2 +-
+ .../openstack_tasks/manifests/openstack_controller/openstack_controller.pp  | 2 +-
  tests/noop/spec/hosts/openstack-controller/openstack-controller_spec.rb | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/deployment/puppet/osnailyfacter/modular/openstack-controller/openstack-controller.pp b/deployment/puppet/osnailyfacter/modular/openstack-controller/openstack-controller.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/openstack_controller/openstack_controller.pp b/deployment/puppet/openstack_tasks/manifests/openstack_controller/openstack_controller.pp
 index b1d8795..88e0ab3 100644
---- a/deployment/puppet/osnailyfacter/modular/openstack-controller/openstack-controller.pp
-+++ b/deployment/puppet/osnailyfacter/modular/openstack-controller/openstack-controller.pp
+--- a/deployment/puppet/openstack_tasks/manifests/openstack_controller/openstack_controller.pp
++++ b/deployment/puppet/openstack_tasks/manifests/openstack_controller/openstack_controller.pp
 @@ -233,7 +233,7 @@ if $primary_controller {
-       "OS_REGION_NAME=${region}",
-       "NOVA_ENDPOINT_TYPE=internalURL",
-     ],
--    command   => 'bash -c "nova flavor-create --is-public true m1.micro auto 64 0 1"',
-+    command   => 'bash -c "nova flavor-create --is-public true m1.micro auto 128 0 1"',
-     #FIXME(mattymo): Upstream bug PUP-2299 for retries in unless/onlyif
-     # Retry nova-flavor list until it exits 0, then exit with grep status,
-     # finally exit 1 if tries exceeded
+         "OS_REGION_NAME=${region}",
+         "NOVA_ENDPOINT_TYPE=internalURL",
+       ],
+-      command   => 'bash -c "nova flavor-create --is-public true m1.micro auto 64 0 1"',
++      command   => 'bash -c "nova flavor-create --is-public true m1.micro auto 128 0 1"',
+       #FIXME(mattymo): Upstream bug PUP-2299 for retries in unless/onlyif
+       # Retry nova-flavor list until it exits 0, then exit with grep status,
+       # finally exit 1 if tries exceeded
 diff --git a/tests/noop/spec/hosts/openstack-controller/openstack-controller_spec.rb b/tests/noop/spec/hosts/openstack-controller/openstack-controller_spec.rb
 index 36161e6..b15da07 100644
 --- a/tests/noop/spec/hosts/openstack-controller/openstack-controller_spec.rb
 +++ b/tests/noop/spec/hosts/openstack-controller/openstack-controller_spec.rb
-@@ -171,7 +171,7 @@ describe manifest do
+@@ -399,5 +399,5 @@ describe manifest do
      if primary_controller
        it 'should retry unless when creating m1.micro flavor' do
          should contain_exec('create-m1.micro-flavor').with(
 -           'command' => 'bash -c "nova flavor-create --is-public true m1.micro auto 64 0 1"',
 +           'command' => 'bash -c "nova flavor-create --is-public true m1.micro auto 128 0 1"',
             'unless'  => 'bash -c \'for tries in {1..10}; do
-                     nova flavor-list | grep m1.micro;
-                     status=("${PIPESTATUS[@]}");
index 7f240c8..40ac638 100644 (file)
@@ -10,7 +10,7 @@ diff --git a/deployment/puppet/osnailyfacter/modular/astute/tasks.yaml b/deploym
 index a2cb1da..d9d2dcc 100644
 --- a/deployment/puppet/osnailyfacter/modular/astute/tasks.yaml
 +++ b/deployment/puppet/osnailyfacter/modular/astute/tasks.yaml
-@@ -19,7 +19,7 @@
+@@ -19,6 +19,6 @@
      cmd: ruby /etc/puppet/modules/osnailyfacter/modular/astute/upload_cirros.rb
      retries: 3
      interval: 20
@@ -18,4 +18,3 @@ index a2cb1da..d9d2dcc 100644
 +    timeout: 360
  
  - id: upload_nodes_info
-   type: upload_file
index 33d31ff..a132517 100644 (file)
@@ -8,7 +8,7 @@ use PL011 serial driver for guests, adding console=ttyAMA0 is also
 a nice UX addition.
 ---
  .../openstack/files/nova-libvirt-vga-console.patch | 39 ++++++++++++++++++++++
- deployment/puppet/openstack/manifests/compute.pp   | 19 +++++++++++
+ deployment/puppet/openstack_tasks/manifests/roles/compute.pp   | 19 +++++++++++
  2 files changed, 58 insertions(+)
  create mode 100644 deployment/puppet/openstack/files/nova-libvirt-vga-console.patch
 
@@ -57,35 +57,30 @@ index 0000000..c5f8e5a
 +             # NOTE(ldbragst): PowerKVM doesn't support 'cirrus' be default
 +             # so use 'vga' instead when running on Power hardware.
 +             video.type = 'vga'
-diff --git a/deployment/puppet/openstack/manifests/compute.pp b/deployment/puppet/openstack/manifests/compute.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
 index c0349dc..46b1801 100644
---- a/deployment/puppet/openstack/manifests/compute.pp
-+++ b/deployment/puppet/openstack/manifests/compute.pp
-@@ -157,6 +157,12 @@ class openstack::compute (
-     }
-   }
+--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+@@ -157,4 +157,10 @@ class openstack::compute (
+
+   include ::nova::params
++
 +  if ! defined(Package['patch']) {
 +    package { 'patch':
 +      ensure => 'present',
 +    }
 +  }
-+
-   $glance_connection = $glance_api_servers
  
    case $::osfamily {
-@@ -250,6 +256,7 @@ class openstack::compute (
+@@ -250,3 +256,4 @@ class openstack::compute (
  
-   $memcached_addresses =  suffix($cache_server_ip, inline_template(":<%= @cache_server_port %>"))
    $notify_on_state_change = 'vm_and_task_state'
 +  $nova_path = '/usr/lib/python2.7/dist-packages/nova'
  
-   class { 'nova':
-       install_utilities      => false,
-@@ -273,6 +280,18 @@ class openstack::compute (
-       service_down_time      => $nova_service_down_time,
-       notify_on_state_change => $notify_on_state_change,
-       memcached_servers      => $memcached_addresses,
+@@ -273,5 +280,17 @@ class openstack::compute (
+     notification_driver    => $ceilometer_hash['notification_driver'],
+     memcached_servers      => $memcached_addresses,
+     cinder_catalog_info    => pick($nova_hash_real['cinder_catalog_info'], 'volumev2:cinderv2:internalURL'),
 +  } ->
 +  # FIXME(armband): Workaround for missing arm defaults in nova libvirt driver
 +  file { "${nova_path}/libvirt-vga-console.patch":
@@ -100,4 +95,3 @@ index c0349dc..46b1801 100644
 +    require => [Package['patch']],
    }
  
-   if str2bool($::is_virtual) {
index 571bcb7..4a242b9 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
 Signed-off-by: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com>
 ---
  .../openstack/files/nova-libvirt-inject.patch      | 44 ++++++++++++++++++++++
- deployment/puppet/openstack/manifests/compute.pp   | 12 ++++++
+ deployment/puppet/openstack_tasks/manifests/roles/compute.pp   | 12 ++++++
  2 files changed, 56 insertions(+)
  create mode 100644 deployment/puppet/openstack/files/nova-libvirt-inject.patch
 
@@ -67,13 +67,11 @@ index 0000000..9cbfe5f
 +             target_partition = CONF.libvirt.inject_partition
 +             if target_partition == 0:
 +                 target_partition = None
-diff --git a/deployment/puppet/openstack/manifests/compute.pp b/deployment/puppet/openstack/manifests/compute.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
 index 46b1801..d42d6a1 100644
---- a/deployment/puppet/openstack/manifests/compute.pp
-+++ b/deployment/puppet/openstack/manifests/compute.pp
-@@ -281,6 +281,18 @@ class openstack::compute (
-       notify_on_state_change => $notify_on_state_change,
-       memcached_servers      => $memcached_addresses,
+--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+@@ -281,4 +281,16 @@ class openstack::compute (
    } ->
 +  # FIXME(armband): Fix inject for part image direct boot (bug LP #1469308)
 +  file { "${nova_path}/libvirt-inject.patch":
index 0d13efe..0ddad11 100644 (file)
@@ -11,38 +11,36 @@ older than 4.0.
 
 [1] https://www.kernel.org/doc/Documentation/filesystems/xfs.txt
 ---
- deployment/puppet/osnailyfacter/modular/ceph/ceph-osd.pp   | 7 +++++++
- deployment/puppet/osnailyfacter/modular/globals/globals.pp | 2 +-
+ deployment/puppet/osnailyfacter/manifests/ceph/ceph_osd.pp   | 7 +++++++
+ deployment/puppet/osnailyfacter/manifests/globals/globals.pp | 2 +-
  2 files changed, 8 insertions(+), 1 deletion(-)
 
-diff --git a/deployment/puppet/osnailyfacter/modular/ceph/ceph-osd.pp b/deployment/puppet/osnailyfacter/modular/ceph/ceph-osd.pp
+diff --git a/deployment/puppet/osnailyfacter/manifests/ceph/ceph_osd.pp b/deployment/puppet/osnailyfacter/manifests/ceph/ceph_osd.pp
 index f7da80e..22aab33 100644
---- a/deployment/puppet/osnailyfacter/modular/ceph/ceph-osd.pp
-+++ b/deployment/puppet/osnailyfacter/modular/ceph/ceph-osd.pp
-@@ -50,6 +50,13 @@ class {'ceph':
- }
+--- a/deployment/puppet/osnailyfacter/manifests/ceph/ceph_osd.pp
++++ b/deployment/puppet/osnailyfacter/manifests/ceph/ceph_osd.pp
+@@ -50,4 +50,11 @@ class {'ceph':
  }
  
- if $ceph_tuning_settings != {} {
-+  if versioncmp($::kernelmajversion, '4.0') < 0 {
-+    # FIXME(armband): XFS mount opt delaylog is deprecated in kernels >=4.0.
-+    $ceph_tuning_settings['osd_mount_options_xfs'] = join([
-+      $ceph_tuning_settings['osd_mount_options_xfs'],
-+      'delaylog'
-+    ], ',')
-+  }
-   ceph_conf {
-     'global/debug_default'                    : value => $debug;
-     'global/max_open_files'                   : value => $ceph_tuning_settings['max_open_files'];
-diff --git a/deployment/puppet/osnailyfacter/modular/globals/globals.pp b/deployment/puppet/osnailyfacter/modular/globals/globals.pp
+   if $ceph_tuning_settings_hash != {} {
++    if versioncmp($::kernelmajversion, '4.0') < 0 {
++      # FIXME(armband): XFS mount opt delaylog is deprecated in kernels >=4.0.
++      $ceph_tuning_settings_hash['osd_mount_options_xfs'] = join([
++        $ceph_tuning_settings_hash['osd_mount_options_xfs'],
++        'delaylog'
++      ], ',')
++    }
+     ceph_conf {
+diff --git a/deployment/puppet/osnailyfacter/manifests/globals/globals.pp b/deployment/puppet/osnailyfacter/modular/globals/globals.pp
 index 268a5b1..69aed7b 100644
---- a/deployment/puppet/osnailyfacter/modular/globals/globals.pp
-+++ b/deployment/puppet/osnailyfacter/modular/globals/globals.pp
+--- a/deployment/puppet/osnailyfacter/manifests/globals/globals.pp
++++ b/deployment/puppet/osnailyfacter/manifests/globals/globals.pp
 @@ -123,7 +123,7 @@ if ($storage_hash['volumes_ceph'] or $storage_hash['images_ceph'] or $storage_ha
-   $ceph_tuning_settings = {
-     'max_open_files'                       => pick($storage_tuning_settings['max_open_files'], '131072'),
-     'osd_mkfs_type'                        => pick($storage_tuning_settings['osd_mkfs_type'], 'xfs'),
--    'osd_mount_options_xfs'                => pick($storage_tuning_settings['osd_mount_options_xfs'], 'rw,relatime,inode64,logbsize=256k,delaylog,allocsize=4M'),
-+    'osd_mount_options_xfs'                => pick($storage_tuning_settings['osd_mount_options_xfs'], 'rw,relatime,inode64,logbsize=256k,allocsize=4M'),
-     'osd_op_threads'                       => pick($storage_tuning_settings['osd_op_threads'], '20'),
-     'filestore_queue_max_ops'              => pick($storage_tuning_settings['filestore_queue_max_ops'], '500'),
-     'filestore_queue_committing_max_ops'   => pick($storage_tuning_settings['filestore_queue_committing_max_ops'], '5000'),
+     $ceph_tuning_settings = {
+       'max_open_files'                       => pick($storage_tuning_settings['max_open_files'], '131072'),
+       'osd_mkfs_type'                        => pick($storage_tuning_settings['osd_mkfs_type'], 'xfs'),
+-      'osd_mount_options_xfs'                => pick($storage_tuning_settings['osd_mount_options_xfs'], 'rw,relatime,inode64,logbsize=256k,delaylog,allocsize=4M'),
++      'osd_mount_options_xfs'                => pick($storage_tuning_settings['osd_mount_options_xfs'], 'rw,relatime,inode64,logbsize=256k,allocsize=4M'),
+       'osd_op_threads'                       => pick($storage_tuning_settings['osd_op_threads'], '20'),
+       'filestore_queue_max_ops'              => pick($storage_tuning_settings['filestore_queue_max_ops'], '500'),
+       'filestore_queue_committing_max_ops'   => pick($storage_tuning_settings['filestore_queue_committing_max_ops'], '5000'),
index 63f2c1c..36353a8 100644 (file)
@@ -21,16 +21,15 @@ This patch extends the version checking introduced in [1]:
 [1] https://review.openstack.org/#/c/200602/8/deployment/puppet/
     openstack/manifests/ceilometer.pp
 ---
- deployment/puppet/openstack/manifests/ceilometer.pp | 8 +++++++-
+ deployment/puppet/openstack_tasks/manifests/ceilometer/compute.pp | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
-diff --git a/deployment/puppet/openstack/manifests/ceilometer.pp b/deployment/puppet/openstack/manifests/ceilometer.pp
+diff --git a/deployment/puppet/openstack_tasks/manifests/ceilometer/compute.pp b/deployment/puppet/openstack_tasks/manifests/ceilometer/compute.pp
 index 8311731..1d7af2b 100644
---- a/deployment/puppet/openstack/manifests/ceilometer.pp
-+++ b/deployment/puppet/openstack/manifests/ceilometer.pp
-@@ -195,8 +195,14 @@ class openstack::ceilometer (
+--- a/deployment/puppet/openstack_tasks/manifests/ceilometer/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/ceilometer/compute.pp
+@@ -195,7 +195,13 @@ class openstack::ceilometer (
  
-   if ($on_compute) {
      if $::operatingsystem == 'Ubuntu' and $::ceilometer::params::libvirt_group {
 +      # Armband libvirt-bin deb package (1.3.2 version) creates 'libvirtd' group on Ubuntu
 +      if (versioncmp($::libvirt_package_version, '1.3.2') >= 0) {