# TODO: Implement create storage account feature. Currently, storage_account must be manually created on azure account.
# TODO: When more granular azure operations are implemented (i.e. list disk, list cloud services, etc). Use the
# fine-grain listings to ensure higher level operations are performed.
# ============================================================
- name: test with no credentials
  azure:
  register: result
  ignore_errors: true
  environment:
    AZURE_SUBSCRIPTION_ID: ""
    AZURE_CERT_PATH: ""

- name: assert failure when called with no credentials
  assert:
    that:
       - 'result.failed'
       - 'result.msg == "No subscription_id provided. Please set ''AZURE_SUBSCRIPTION_ID'' or use the ''subscription_id'' parameter"'

# ============================================================

- name: test credentials
  azure:
    subscription_id: "{{ subscription_id }}"
    management_cert_path: "{{ cert_path }}"
  register: result
  ignore_errors: true

- name: assert failure when called with credentials and no parameters
  assert:
    that:
       - 'result.failed'
       - 'result.msg == "name parameter is required for new instance"'

# ============================================================
- name: test with no password or ssh cert
  azure:
    subscription_id: "{{ subscription_id }}"
    management_cert_path: "{{ cert_path }}"
    name: "{{ instance_name }}"
    image: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_4-LTS-amd64-server-20140514-en-us-30GB"
    storage_account: "{{ storage_account }}"
    user: "{{ user }}"
    role_size: "{{ role_size }}"
    location: "{{ location }}"
    state: present
  register: result
  ignore_errors: true

- name: assert failure when called with no password or ssh cert
  assert:
    that:
       - 'result.failed'
       - 'result.msg == "password or ssh_cert_path parameter is required for new instance"'

# ============================================================
- name: test status=Running (expected changed=true)
  azure:
    subscription_id: "{{ subscription_id }}"
    management_cert_path: "{{ cert_path }}"
    name: "{{ instance_name }}"
    image: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_4-LTS-amd64-server-20140514-en-us-30GB"
    storage_account: "{{ storage_account }}"
    user: "{{ user }}"
    role_size: "{{ role_size }}"
    password: "{{ password }}"
    location: "{{ location }}"
    wait: yes
    state: present
    wait_timeout: 1200
  register: result

- name: assert state=Running (expected changed=true)
  assert:
    that:
       - 'result.changed'
       - 'result.deployment.name == "{{ instance_name }}"'
       - 'result.deployment.status == "Running"'

# ============================================================
- name: test state=absent (expected changed=true)
  azure:
    subscription_id: "{{ subscription_id }}"
    management_cert_path: "{{ cert_path }}"
    name: "{{ instance_name }}"
    wait: yes
    state: absent
    wait_timeout: 1200
  register: result

- name: assert named deployment changed (expected changed=true)
  assert:
    that:
       - 'result.changed'
       - 'result.deployment.name == "{{ instance_name }}"'
