diff --git a/docs/design/reference.deploy.yml b/docs/design/reference.deploy.yml
index d25be15e..36752306 100644
--- a/docs/design/reference.deploy.yml
+++ b/docs/design/reference.deploy.yml
@@ -1,4 +1,4 @@
-# deploy.yml reference implementation v2.5.0
+# deploy.yml reference implementation v2.6.0
# [Optional]
# By changing the license_accepted boolean value to "true" you are
@@ -8,6 +8,15 @@
licensing:
license_accepted: false
+#autonames:
+# custom:
+# - ecs01
+# - ecs02
+# - ecs03
+# - ecs04
+# - ecs05
+# - ecs06
+
# [Required]
# Deployment facts reference
facts:
@@ -63,7 +72,7 @@ facts:
# VFS path to source of randomness
# Defaults to /dev/urandom for speed considerations. If you prefer /dev/random, put that here.
# If you have a /dev/srandom implementation or special entropy hardware, you may use that too
- # so long as it implements a /dev/random type device abstraction.
+ # so long as it implements a /dev/random type device.
entropy_source: /dev/urandom
#
# [Optional]
@@ -71,7 +80,9 @@ facts:
# Available options:
# - "moons" (ECS CE default)
# - "cities" (ECS SKU-flavored)
- autonaming: moons
+ # - "custom" (uncomment and use the top-level autonames block to define these)
+ # autonaming: custom
+
#
# [Optional]
# If your ECS comes with differing default credentials, you can specify those here
diff --git a/patches/3.1.0.2/Dockerfile b/patches/3.1.0.2/Dockerfile
new file mode 100644
index 00000000..7c7cb7c3
--- /dev/null
+++ b/patches/3.1.0.2/Dockerfile
@@ -0,0 +1,23 @@
+# Fixes to the default 3.1.0.2 reduced image.
+
+# Build on object-reduced image (GA release)
+FROM emcvipr/object:3.1.0.2-95467.5ec917e-reduced
+
+# Increase memory for transformsvc
+RUN sed -i s/-Xmx128m/-Xmx512m/ /opt/storageos/bin/transformsvc
+
+# Fix disk partitioning script
+RUN sed -i '/VMware/ s/$/ \&\& [ ! -e \/data\/is_community_edition ]/' /opt/storageos/bin/storageserver-partition-config.sh
+RUN /usr/bin/chmod +x /opt/storageos/bin/storageserver-partition-config.sh
+
+# Set VNets useSeperateThreadPools to True
+RUN f=/opt/storageos/conf/vnest-common-conf-template.xml; grep -q "object.UseSeparateThreadPools" $f || sed -i '/properties id="serviceProperties"/a \ \ \ \ \ \ \ \ true' $f
+
+# Set georeceiver's initialBufferNumOnHeap to something smaller for CE
+RUN f=/opt/storageos/conf/georeceiver-conf.xml; grep -q 'name="initialBufferNumOnHeap" value="10"' $f || sed -i 's/name="initialBufferNumOnHeap" value="60"/name="initialBufferNumOnHeap" value="10"/' $f
+
+# Configure CM Object properties: Disable minimum storage device count
+RUN f=/opt/storageos/conf/cm.object.properties; grep -q 'MustHaveEnoughResources=false' $f || sed -i 's/MustHaveEnoughResources=true/MustHaveEnoughResources=false/' $f
+
+# Allow allocation of different blocks of a chunk to be stored on the same partition
+RUN sed -i 's###g' /opt/storageos/conf/ssm-cf-conf.xml
diff --git a/release.conf b/release.conf
index b0555f8d..04b0c4f9 100644
--- a/release.conf
+++ b/release.conf
@@ -11,6 +11,12 @@
# DO NOT specify an alternate registry here. Use the -r argument to
# bootstrap.sh for that.
#
+### Older versions ( 3.1 )
+# release_artifact="emccorp/ecs-software-3.0.1"
+# release_tag="3.1.0.0"
+# release_tag="3.1.0.1"
+# release_tag="latest"
+#
### Older versions ( 3.0 )
# release_artifact="emccorp/ecs-software-3.0.0"
# release_tag="3.0.0.1"
diff --git a/ui/ansible/roles/installer_generate_ssh_keys/vars/main.yml b/ui/ansible/roles/installer_generate_ssh_keys/vars/main.yml
index 7f2c1c27..178809a3 100644
--- a/ui/ansible/roles/installer_generate_ssh_keys/vars/main.yml
+++ b/ui/ansible/roles/installer_generate_ssh_keys/vars/main.yml
@@ -1,3 +1,5 @@
+# This is all now in ui/ansible/templates/all.j2
+
#keys_rsa:
# keygen_cmd: ssh-keygen -N '' -t rsa -b 4096 -o -a 100 -f
# priv_key: /opt/ssh/id_rsa
diff --git a/ui/ansible/templates/autonames.yml.j2 b/ui/ansible/templates/autonames.yml.j2
index 9835138d..08a50b2b 100644
--- a/ui/ansible/templates/autonames.yml.j2
+++ b/ui/ansible/templates/autonames.yml.j2
@@ -1,5 +1,7 @@
+---
+# Selected autonames: {{ facts['node_defaults']['autonaming'] }}
autonames:
-{%- set autonaming = facts['autonaming'] | default('moons') -%}
+{%- set autonaming = facts['node_defaults']['autonaming'] | default('moons') -%}
{%- for name in autonames[autonaming] %}
- {{ name -}}
{% endfor %}
diff --git a/ui/ecsconfig.py b/ui/ecsconfig.py
index f09d8cbc..d7cb4b66 100755
--- a/ui/ecsconfig.py
+++ b/ui/ecsconfig.py
@@ -296,14 +296,17 @@ def do_ping():
if resp_dict is not None:
if resp_dict['common_name'] is not None:
dt_status = conf.diag_dt_status()
- o('PONG: api_endpoint={} username={} {}'.format(conf.api_endpoint,
- resp_dict['common_name'],
- dt_status['text']))
if x:
if dt_status['status'] is True:
pinging = False
+ o('PONG: api_endpoint={} username={} {}'.format(conf.api_endpoint,
+ resp_dict['common_name'],
+ dt_status['text']))
else:
pinging = True
+ o('WAIT: api_endpoint={} username={} {}'.format(conf.api_endpoint,
+ resp_dict['common_name'],
+ dt_status['text']))
else:
raise ECSClientException("Unexpected response from API")
except requests.ConnectionError or httplib.HTTPException:
diff --git a/ui/etc/config.yml b/ui/etc/config.yml
index 92343c25..c8e3abd6 100644
--- a/ui/etc/config.yml
+++ b/ui/etc/config.yml
@@ -13,7 +13,7 @@
---
ui:
name: ECS Community Edition Install Node
- version: 2.5.2
+ version: 2.6.0
host_root_dir: /opt/emc/ecs-install
state_file: /opt/state.yml
deploy_file: /opt/deploy.yml
@@ -32,7 +32,7 @@ ui:
ffx_sem: /opt/ffx.sem
product:
name: ECS
- version: 3.1.0.1
+ version: 3.1.0.2
vendor: Dell EMC
flavor: Community Edition
slogan: Free and Frictionless
diff --git a/ui/etc/release.conf b/ui/etc/release.conf
index 445f42ca..6426f0f9 100644
--- a/ui/etc/release.conf
+++ b/ui/etc/release.conf
@@ -8,10 +8,10 @@
# it is provided by or on behalf of EMC.
release_name="ECS Community Edition"
-release_version="3.1.0.1"
+release_version="3.1.0.2"
release_product="ECS Software"
release_artifact="emccorp/ecs-software-3.1.0"
-release_tag="hf1"
+release_tag="3.1.0.2"
release_common_name="emccorp/ecs-software:latest"
docker_host_root="/opt/emc/ecs-install"
@@ -32,8 +32,8 @@ repo_name='emccorp'
image_name='ecs-install'
tag='latest'
ver_maj='2'
-ver_min='5'
-ver_rev='2'
+ver_min='6'
+ver_rev='0'
ver_tag='r'
serial=0
diff --git a/ui/etc/schema.yml b/ui/etc/schema.yml
index 556b8063..dd3a761c 100644
--- a/ui/etc/schema.yml
+++ b/ui/etc/schema.yml
@@ -9,6 +9,18 @@ mapping:
license_accepted:
type: bool
+ autonames:
+ type: map
+ required: False
+ mapping:
+ custom:
+ type: seq
+ required: True
+ sequence:
+ - type: str
+ required: True
+ func: valid_hostname
+
facts:
type: map
required: True
diff --git a/ui/run.sh b/ui/run.sh
index 631aa667..10d1dc2f 100755
--- a/ui/run.sh
+++ b/ui/run.sh
@@ -112,7 +112,7 @@ case "$(basename ${0})" in
#run ecsdeploy load || exit $?
run ecsdeploy cache || exit $?
;;
- island-step2|ova-step1)
+ island-step2)
#run ecsdeploy load || exit $?
run ecsdeploy access || exit $?
run ecsdeploy check || exit $?
@@ -123,6 +123,14 @@ case "$(basename ${0})" in
run ecsdeploy deploy || exit $?
run ecsdeploy start || exit $?
;;
+ ova-step1)
+ #run ecsdeploy load || exit $?
+ run ecsdeploy access || exit $?
+ run ecsdeploy check || exit $?
+ run ecsdeploy bootstrap || exit $?
+ run ecsdeploy deploy || exit $?
+ run ecsdeploy start || exit $?
+ ;;
step1)
#run ecsdeploy load || exit $?
run ecsdeploy access || exit $?
diff --git a/ui/setup.py b/ui/setup.py
index 73ada285..a406ad22 100755
--- a/ui/setup.py
+++ b/ui/setup.py
@@ -3,7 +3,7 @@
setup(
name='ecsdeploy',
- version='2.5.2',
+ version='2.6.0',
packages=find_packages(),
scripts=['ui.py',
'ecsdeploy.py',
diff --git a/ui/tui/schema_functions.py b/ui/tui/schema_functions.py
index 727d8fe2..fa682cb0 100644
--- a/ui/tui/schema_functions.py
+++ b/ui/tui/schema_functions.py
@@ -36,7 +36,7 @@ def alphanumeric(value, rule_obj, path):
__validate_regex(AlphanumericRegex, value, "Not a valid name: '%s' (%s)" % (value, path))
return True
-def docker_image(value, rule_obj,path):
+def docker_image(value, rule_obj, path):
__validate_regex(DockerImageRegex, value, "Not a valid Docker image: '%s' (%s)" % (value, path))
return True
@@ -47,3 +47,7 @@ def s3_secret_key(value, rule_obj, path):
def valid_crypto_method(value, rule_obj, path):
__validate_regex(ValidCryptoMethodRegex, value, "Not a supported crypto method: '%s' (%s)" % (value, path))
return True
+
+def valid_hostname(value, rule_obj, path):
+ __validate_regex(HostnameRegex, value, "Not a valid hostname: '%s' (%s)" % (value, path))
+ return True