Now we can see the following situations:
1. User start to deploy environment
2. Some error has accured during the deploy
3. Deploy Hangs (yes, it is realy does not finished after 8+ hours)
4. User can see in the deployments logs that some errors accured.
For example:
2013-07-31 20:46:20 - Deployment scheduled
2013-07-31 20:46:25 - Creating instance host1 (iis_instance_0)
2013-07-31 20:46:52 - Instance host1 (iis_instance_0) created
2013-07-31 20:46:53 - Creating IIS Web Server on unit host1 (iis_instance_0)
2013-07-31 20:53:32 - Unexpected error has occurred
5. But can not stop this deployment - only can delete this environment, but, realy, user want to save succesfully deployed VMs.
What we can do: we can implement possibility to stop the current deploy and it will mean that we should save information about all 'success' changes and change the environment status after this deploy.
For example: user created AD service and deploy this environment, after that user add IIS service and this service deployed with errors. In this situation we should have possibility to stop deploy and delete IIS service and redeploy this environment.
Example of conductor logs:
{code}
2013-08-02 04:20:10.322 8254 DEBUG muranoconductor.reporting [-] Reported '{'environment_id': u'2b45c73006bb4f259d1a8530e32b8af3', 'level': 'info', 'text': 'Primary Domain Controller created', 'entity': 'unit', 'details': None, 'id': u'f16dbccad93848a181a1b409cae86679'}' to API _report_func /usr/local/lib/python2.7/dist-packages/muranoconductor/reporting.py:50
2013-08-02 04:20:10.546 8254 DEBUG muranoconductor.workflow [-] Rule 'Search through all the environments..' matches on '{u'updated': u'2013-08-01T11:01:17.767583', u'name': u'test', u'created': u'2013-08-01T11:01:17.768675', u'tenant_id': u'63ee8d0c356d42a78699bae30820f4c2', u'token': u'899b454ecbe6599f3d77c3a55a669cb2', u'version': 0, u'services': [{'state': {'primaryDc': u'ad.local_instance_0', 'domainAdminPassword': u'P@ssw0rd'}, u'domain': u'ad.local', u'availabilityZone': u'', u'name': u'ad.local', u'adminPassword': u'P@ssw0rd', u'created': u'2013-08-01 11:02:03.462001', u'updated': u'2013-08-01 11:02:03.462024', u'unitNamingPattern': u'domain', u'osImage': u'ws-2012-std', u'adminAccountName': u'Administrator', u'units': [{u'isMaster': True, u'name': u'ad.local_instance_0', 'temp': {'instanceName': u'ad.local_instance_0'}, 'state': {'hostname': u'domain', 'osImageName': 'ws-2012-std'}, u'recoveryPassword': u'P@ssw0rd', u'id': u'f16dbccad93848a181a1b409cae86679'}], u'flavor': u'm1.small', u'type': u'activeDirectory', u'id': u'd364a228ae384829995aa6a355047c12'}], u'id': u'2b45c73006bb4f259d1a8530e32b8af3'}' _rule_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:224
2013-08-02 04:20:10.547 8254 DEBUG muranoconductor.workflow [-] Rule 'If any units exists' matches on '{u'isMaster': True, u'name': u'ad.local_instance_0', 'temp': {'instanceName': u'ad.local_instance_0'}, 'state': {'hostname': u'domain', 'osImageName': 'ws-2012-std'}, u'recoveryPassword': u'P@ssw0rd', u'id': u'f16dbccad93848a181a1b409cae86679'}' _rule_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:224
2013-08-02 04:20:10.553 8254 DEBUG muranoconductor.workflow [-] Rule 'Master Units of AD services on which the Primary Domain Controller has been configured but DNS ip has not been asked for' matches on '{u'isMaster': True, u'name': u'ad.local_instance_0', 'temp': {'instanceName': u'ad.local_instance_0'}, 'state': {'hostname': u'domain', 'osImageName': 'ws-2012-std'}, u'recoveryPassword': u'P@ssw0rd', u'id': u'f16dbccad93848a181a1b409cae86679'}' _rule_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:224
2013-08-02 04:20:11.219 8254 INFO muranoconductor.commands.windows_agent [-] Sending RMQ message {u'Commands': [{u'Name': u'Get-DnsListeningIpAddress', u'Arguments': {}}], u'RebootOnCompletion': 0, u'Scripts': [u'ZnVuY3Rpb24gR2V0LURuc0xpc3RlbmluZ0lwQWRkcmVzcyB7DQogICAgSW1wb3J0LU1vZHVsZSBEbnNTZXJ2ZXINCiAgICAoR2V0LUROU1NlcnZlciAtQ29tcHV0ZXJOYW1lIGxvY2FsaG9zdCkuU2VydmVyU2V0dGluZy5MaXN0ZW5pbmdJcEFkZHJlc3MgfA0KICAgICAgICBXaGVyZS1PYmplY3QgeyAkXyAtbWF0Y2ggIlxkezEsM31cLlxkezEsM31cLlxkezEsM31cLlxkezEsM30iIH0NCn0NCg==']} to e2b45c73006bb4f259d1a8530e32b8af3-d364a228ae384829995aa6a355047c12-f16dbccad93848a181a1b409cae86679 with id 12a67b67-8055-409d-b2ef-039e720cfd13
2013-08-02 04:20:11.222 8254 DEBUG muranoconductor.app [-] No rules matched, will now execute pending commands _task_received /usr/local/lib/python2.7/dist-packages/muranoconductor/app.py:110
2013-08-02 04:20:11.223 8254 DEBUG muranoconductor.commands.windows_agent [-] Waiting infinitely for responses to be returned by the agent. 1 total responses remain execute_pending /usr/local/lib/python2.7/dist-packages/muranoconductor/commands/windows_agent.py:67
2013-08-02 04:20:15.650 8254 INFO muranoconductor.windows_agent [-] Received result from f16dbccad93848a181a1b409cae86679 for AskDnsIp: {u'IsException': False, u'Result': [{u'IsException': False, u'Result': [u'10.0.0.4']}]}
2013-08-02 04:20:15.652 8254 DEBUG muranoconductor.workflow [-] Setting '::state.primaryDcIp' to '10.0.0.4' _set_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:162
2013-08-02 04:20:15.875 8254 DEBUG muranoconductor.workflow [-] Rule 'Search through all the environments..' matches on '{u'updated': u'2013-08-01T11:01:17.767583', u'name': u'test', u'created': u'2013-08-01T11:01:17.768675', u'tenant_id': u'63ee8d0c356d42a78699bae30820f4c2', u'token': u'899b454ecbe6599f3d77c3a55a669cb2', u'version': 0, u'services': [{'state': {'primaryDcIp': u'10.0.0.4', 'primaryDc': u'ad.local_instance_0', 'domainAdminPassword': u'P@ssw0rd'}, u'domain': u'ad.local', u'availabilityZone': u'', u'name': u'ad.local', u'adminPassword': u'P@ssw0rd', u'created': u'2013-08-01 11:02:03.462001', u'updated': u'2013-08-01 11:02:03.462024', u'unitNamingPattern': u'domain', u'osImage': u'ws-2012-std', u'adminAccountName': u'Administrator', u'units': [{u'isMaster': True, u'name': u'ad.local_instance_0', 'temp': {'instanceName': u'ad.local_instance_0'}, 'state': {'hostname': u'domain', 'osImageName': 'ws-2012-std'}, u'recoveryPassword': u'P@ssw0rd', u'id': u'f16dbccad93848a181a1b409cae86679'}], u'flavor': u'm1.small', u'type': u'activeDirectory', u'id': u'd364a228ae384829995aa6a355047c12'}], u'id': u'2b45c73006bb4f259d1a8530e32b8af3'}' _rule_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:224
2013-08-02 04:20:15.876 8254 DEBUG muranoconductor.workflow [-] Rule 'If any units exists' matches on '{u'isMaster': True, u'name': u'ad.local_instance_0', 'temp': {'instanceName': u'ad.local_instance_0'}, 'state': {'hostname': u'domain', 'osImageName': 'ws-2012-std'}, u'recoveryPassword': u'P@ssw0rd', u'id': u'f16dbccad93848a181a1b409cae86679'}' _rule_func /usr/local/lib/python2.7/dist-packages/muranoconductor/workflow.py:224
2013-08-02 04:20:15.884 8254 DEBUG muranoconductor.app [-] No rules matched, will now execute pending commands _task_received /usr/local/lib/python2.7/dist-packages/muranoconductor/app.py:110
2013-08-02 04:20:15.884 8254 DEBUG muranoconductor.app [-] No pending commands found, seems like we are done _task_received /usr/local/lib/python2.7/dist-packages/muranoconductor/app.py:114
2013-08-02 04:20:16.330 8254 INFO muranoconductor.app [-] Finished processing task . Result = {"updated": "2013-08-01T11:01:17.767583", "name": "test", "created": "2013-08-01T11:01:17.768675", "tenant_id": "63ee8d0c356d42a78699bae30820f4c2", "version": 0, "services": [{"state": {"primaryDcIp": "10.0.0.4", "primaryDc": "ad.local_instance_0", "domainAdminPassword": "P@ssw0rd"}, "domain": "ad.local", "availabilityZone": "", "name": "ad.local", "adminPassword": "P@ssw0rd", "created": "2013-08-01 11:02:03.462001", "updated": "2013-08-01 11:02:03.462024", "unitNamingPattern": "domain", "osImage": "ws-2012-std", "adminAccountName": "Administrator", "units": [{"isMaster": true, "name": "ad.local_instance_0", "state": {"hostname": "domain", "osImageName": "ws-2012-std"}, "recoveryPassword": "P@ssw0rd", "id": "f16dbccad93848a181a1b409cae86679"}], "flavor": "m1.small", "type": "activeDirectory", "id": "d364a228ae384829995aa6a355047c12"}], "id": "2b45c73006bb4f259d1a8530e32b8af3"}