示例#1
0
def error_cleanup():
    global endpoint_uuid, sns_topic_uuid, alarm_uuid, test_dict
    test_lib.lib_error_cleanup(test_dict)
    if alarm_uuid:
        zwt_ops.delete_alarm(alarm_uuid)
    if sns_topic_uuid:
        zwt_ops.delete_sns_topic(sns_topic_uuid)
    if endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(endpoint_uuid)
def error_cleanup():
    global vm, my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, disk_all_write_bytes_alarm_uuid
    if vm:
        vm.clean()
    if disk_all_write_bytes_alarm_uuid:
        zwt_ops.delete_alarm(disk_all_write_bytes_alarm_uuid)
    if my_sns_topic_uuid:
        zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    if email_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    if email_platform_uuid:
        zwt_ops.delete_sns_application_platform(email_platform_uuid)
示例#3
0
def error_cleanup():
    global endpoint_uuid_01, endpoint_uuid_02, sns_topic_uuid_01, sns_topic_uuid_02, alarm_uuid
    if alarm_uuid:
        zwt_ops.delete_alarm(alarm_uuid)
    if sns_topic_uuid_01:
        zwt_ops.delete_sns_topic(sns_topic_uuid_01)
    if sns_topic_uuid_02:
        zwt_ops.delete_sns_topic(sns_topic_uuid_02)
    if endpoint_uuid_02:
        zwt_ops.delete_sns_application_endpoint(endpoint_uuid_02)
    if endpoint_uuid_01:
        zwt_ops.delete_sns_application_endpoint(endpoint_uuid_01)
def error_cleanup():
	global vm, my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, disk_all_write_bytes_alarm_uuid
	if vm:
		vm.clean()
	if disk_all_write_bytes_alarm_uuid:
		zwt_ops.delete_alarm(disk_all_write_bytes_alarm_uuid)
	if my_sns_topic_uuid:
		zwt_ops.delete_sns_topic(my_sns_topic_uuid)
	if email_endpoint_uuid:
		zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
	if email_platform_uuid:
		zwt_ops.delete_sns_application_platform(email_platform_uuid)
示例#5
0
def error_cleanup():
    global test_dict, my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, event_template_uuid, \
        alarm_template_uuid, alarm_uuid_list
    test_lib.lib_error_cleanup(test_dict)
    if alarm_uuid_list:
        for alarm_uuid in alarm_uuid_list:
            zwt_ops.delete_alarm(alarm_uuid)
    if event_template_uuid:
        zwt_ops.delete_sns_text_template(event_template_uuid)
    if alarm_template_uuid:
        zwt_ops.delete_sns_text_template(alarm_template_uuid)
    if my_sns_topic_uuid:
        zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    if email_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    if email_platform_uuid:
        zwt_ops.delete_sns_application_platform(email_platform_uuid)
    if event_template_uuid:
        zwt_ops.delete_sns_text_template(event_template_uuid)
def error_cleanup():
    global email_platform_uuid, email_endpoint_uuid, dingtalk_endpoint_uuid, http_endpoint_uuid, alarm_uuid, ps_event_sub_uuid, sns_topic_uuid, alarm_template_uuid
    iam2_ops.clean_iam2_enviroment()
    if email_platform_uuid:
        zwt_ops.delete_sns_application_platform(email_platform_uuid)
    if email_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    if dingtalk_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(dingtalk_endpoint_uuid)
    if http_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(http_endpoint_uuid)
    if alarm_uuid:
        zwt_ops.delete_alarm(alarm_uuid)
    if ps_event_sub_uuid:
        zwt_ops.unsubscribe_event(ps_event_sub_uuid)
    if sns_topic_uuid:
        zwt_ops.delete_sns_topic(sns_topic_uuid)
    if alarm_template_uuid:
        zwt_ops.delete_sns_text_template(alarm_template_uuid)
def error_cleanup():
    global test_dict, my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, event_template_uuid, \
        alarm_template_uuid, alarm_uuid_list
    test_lib.lib_error_cleanup(test_dict)
    if alarm_uuid_list:
        for alarm_uuid in alarm_uuid_list:
            zwt_ops.delete_alarm(alarm_uuid)
    if event_template_uuid:
        zwt_ops.delete_sns_text_template(event_template_uuid)
    if alarm_template_uuid:
        zwt_ops.delete_sns_text_template(alarm_template_uuid)
    if my_sns_topic_uuid:
        zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    if email_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    if email_platform_uuid:
        zwt_ops.delete_sns_application_platform(email_platform_uuid)
    if event_template_uuid:
        zwt_ops.delete_sns_text_template(event_template_uuid)
def error_cleanup():
    global email_platform_uuid,email_endpoint_uuid,dingtalk_endpoint_uuid,http_endpoint_uuid,alarm_uuid,ps_event_sub_uuid,sns_topic_uuid,alarm_template_uuid
    iam2_ops.clean_iam2_enviroment()
    if email_platform_uuid:
        zwt_ops.delete_sns_application_platform(email_platform_uuid)
    if email_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    if dingtalk_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(dingtalk_endpoint_uuid)
    if http_endpoint_uuid:
        zwt_ops.delete_sns_application_endpoint(http_endpoint_uuid)
    if alarm_uuid:
        zwt_ops.delete_alarm(alarm_uuid)
    if ps_event_sub_uuid:
        zwt_ops.unsubscribe_event(ps_event_sub_uuid)
    if sns_topic_uuid:
        zwt_ops.delete_sns_topic(sns_topic_uuid)
    if alarm_template_uuid:
        zwt_ops.delete_sns_text_template(alarm_template_uuid)
示例#9
0
def test():
    global endpoint_uuid, sns_topic_uuid, alarm_uuid, test_dict, test_stub
    url = 'https://oapi.dingtalk.com/robot/send?access_token' \
          '=0be899d4bd0a7629961a5ccd3035dfba30d084b57944897838f1b60100dddddd'
    name = 'dingtalkendpointTest'
    endpoint_uuid = zwt_ops.create_sns_dingtalk_endpoint(url, name, at_all=True).uuid

    # create sns topic
    sns_topic_uuid = zwt_ops.create_sns_topic('sns_topic_01').uuid
    zwt_ops.subscribe_sns_topic(sns_topic_uuid, endpoint_uuid)

    # create alarm
    namespace = 'ZStack/Volume'
    actions = [{"actionUuid": sns_topic_uuid, "actionType": "sns"}]
    comparisonOperator = 'GreaterThanOrEqualTo'
    repeat_interval = 20
    period = 10
    threshold = 5
    metric_name = 'TotalVolumeCount'
    alarm_uuid = zwt_ops.create_alarm(comparisonOperator, period, threshold, namespace, metric_name, actions=actions,
                                      repeat_interval=repeat_interval).uuid

    # Create volume
    for i in range(threshold+1):
        volume = test_stub.create_volume()
        test_dict.add_volume(volume)

    time.sleep(20)
    cond = res_ops.gen_query_conditions('uuid','=',alarm_uuid)
    alarm_inv = res_ops.query_resource(res_ops.ALARM,cond)[0]
    if alarm_inv.status != 'Alarm':
        test_util.test_fail("Alarm did't change status to alarm.Test fail")

    test_lib.lib_robot_cleanup(test_dict)
    zwt_ops.delete_alarm(alarm_uuid)
    zwt_ops.delete_sns_topic(sns_topic_uuid)
    zwt_ops.delete_sns_application_endpoint(endpoint_uuid)

    test_util.test_pass('success test alarm image account with dingtalk!')
示例#10
0
def test():
    global my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, event_template_uuid, \
        alarm_template_uuid, alarm_uuid_list, test_dict

    smtp_server = 'smtp.zstack.io'
    pop_server = 'pop3.zstack.io'
    smtp_port = 25
    username = '******'
    password = '******'
    email_platform_name = 'Alarm_email'
    email_platform = zwt_ops.create_sns_email_platform(smtp_server, smtp_port,
                                                       email_platform_name,
                                                       username, password)
    email_platform_uuid = email_platform.uuid
    try:
        zwt_ops.validate_sns_email_platform(email_platform_uuid)
    except:
        test_util.test_fail(
            'Validate SNS Email Platform Failed, Email Plarform: %s' %
            email_platform_uuid)
    email_endpoint_uuid = zwt_ops.create_sns_email_endpoint(
        username, 'test_qa', email_platform_uuid).uuid

    my_sns_topic = zwt_ops.create_sns_topic('my_sns_topic')
    my_sns_topic_uuid = my_sns_topic.uuid
    zwt_ops.subscribe_sns_topic(my_sns_topic_uuid, email_endpoint_uuid)

    # create alarm
    namespace = 'ZStack/Image'
    greater_than_or_equal_to = 'GreaterThanOrEqualTo'
    greater_than = 'GreaterThan'
    actions = [{"actionUuid": my_sns_topic_uuid, "actionType": "sns"}]

    period = 10

    threshold_1 = 1
    threshold_3 = 3
    threshold_10 = 10
    threshold_50 = 50

    total_image_count = 'TotalImageCount'
    total_image_count_alarm_uuid = zwt_ops.create_alarm(
        greater_than_or_equal_to,
        period,
        threshold_3,
        namespace,
        total_image_count,
        name='total-count-image',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(total_image_count_alarm_uuid)

    ready_image_count = 'ReadyImageCount'
    ready_image_count_alarm_uuid = zwt_ops.create_alarm(
        greater_than_or_equal_to,
        period,
        threshold_3,
        namespace,
        ready_image_count,
        name='ready_image_count',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(ready_image_count_alarm_uuid)

    ready_image_in_percent = 'ReadyImageInPercent'
    ready_image_in_percent_alarm_uuid = zwt_ops.create_alarm(
        greater_than_or_equal_to,
        period,
        threshold_1,
        namespace,
        ready_image_in_percent,
        name='ready_image_in_percent',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(ready_image_in_percent_alarm_uuid)

    root_volume_template_count = 'RootVolumeTemplateCount'
    root_volume_template_count_alarm_uuid = zwt_ops.create_alarm(
        greater_than_or_equal_to,
        period,
        threshold_3,
        namespace,
        root_volume_template_count,
        name='root_volume_template_count',
        repeat_interval=600,
        actions=actions,
    ).uuid
    alarm_uuid_list.append(root_volume_template_count_alarm_uuid)

    root_volume_template_in_percent = 'RootVolumeTemplateInPercent'
    root_volume_template_in_percent_alarm_uuid = zwt_ops.create_alarm(
        greater_than,
        period,
        threshold_1,
        namespace,
        root_volume_template_in_percent,
        name='root_volume_template_in_percent',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(root_volume_template_in_percent_alarm_uuid)

    data_volume_template_count = 'DataVolumeTemplateCount'
    data_volume_template_count_alarm_uuid = zwt_ops.create_alarm(
        greater_than_or_equal_to,
        period,
        threshold_3,
        namespace,
        data_volume_template_count,
        name='data_volume_template_count',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(data_volume_template_count_alarm_uuid)

    data_volume_template_in_percent = 'DataVolumeTemplateInPercent'
    data_volume_template_in_percent_alarm_uuid = zwt_ops.create_alarm(
        greater_than,
        period,
        threshold_1,
        namespace,
        data_volume_template_in_percent,
        name='data_volume_template_in_percent',
        repeat_interval=600,
        actions=actions).uuid
    alarm_uuid_list.append(data_volume_template_in_percent_alarm_uuid)

    iso_count = 'ISOCount'
    iso_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to,
                                                period,
                                                threshold_3,
                                                namespace,
                                                iso_count,
                                                name='iso_count',
                                                repeat_interval=600,
                                                actions=actions).uuid
    alarm_uuid_list.append(iso_count_alarm_uuid)

    iso_in_percent = 'ISOInPercent'
    iso_in_percent_alarm_uuid = zwt_ops.create_alarm(greater_than,
                                                     period,
                                                     threshold_1,
                                                     namespace,
                                                     iso_in_percent,
                                                     name='iso_in_percent',
                                                     repeat_interval=600,
                                                     actions=actions).uuid
    alarm_uuid_list.append(iso_in_percent_alarm_uuid)

    # create Image
    image_name = os.environ.get('imageName_s')
    l3_name = os.environ.get('l3VlanNetworkName1')
    vm_name = 'multihost_basic_vm'
    vm = test_stub.create_vm(vm_name, image_name, l3_name)
    test_dict.add_vm(vm)
    volume = test_stub.create_volume()
    test_dict.add_volume(volume)
    volume.attach(vm)
    zone_uuid = vm.get_vm().zoneUuid
    root_volume_uuid = test_lib.lib_get_root_volume_uuid(vm.get_vm())
    bs_uuid_list = test_lib.lib_get_backup_storage_uuid_list_by_zone(zone_uuid)

    image_option = test_util.ImageOption()
    image_option.set_root_volume_uuid(root_volume_uuid)
    image_option.set_format('qcow2')
    image_option.set_backup_storage_uuid_list(bs_uuid_list)
    # image_option.set_mediaType('ISO')

    for i in range(threshold_3):
        image_option.set_name('root_volume_template_for_test_' + str(i))
        root_volume_template = zstack_image_header.ZstackTestImage()
        root_volume_template.set_creation_option(image_option)
        root_volume_template.create()
        test_dict.add_image(root_volume_template)
        iso = test_stub.add_test_minimal_iso("iso_for_test_" + str(i))
        test_dict.add_image(iso)
    time.sleep(30)
    # before change template
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   total_image_count,
                                   total_image_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   ready_image_count,
                                   ready_image_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   ready_image_in_percent,
                                   ready_image_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   root_volume_template_count,
                                   root_volume_template_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   root_volume_template_in_percent,
                                   root_volume_template_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, iso_count,
                                   iso_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                   iso_in_percent, iso_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')

    alarm_keywords = 'TemplateForAlarmOn'

    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       total_image_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       ready_image_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       ready_image_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       root_volume_template_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(
            pop_server, username, password, alarm_keywords,
            root_volume_template_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       data_volume_template_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(
            pop_server, username, password, alarm_keywords,
            data_volume_template_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords, iso_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password,
                                       alarm_keywords,
                                       iso_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')

    application_platform_type = 'Email'
    alarm_template_name = 'my-alarm-template'
    alarm_template = '${ALARM_NAME} Change status to ${ALARM_CURRENT_STATUS}' \
                     'ALARM_UUID:${ALARM_UUID}' \
                     'keyword1:ThisWordIsKeyWord' \
                     'keyword2:TemplateForAlarmOn' \
                     '(Using for template changes email check)'
    alarm_template_uuid = zwt_ops.create_sns_text_template(
        alarm_template_name,
        application_platform_type,
        alarm_template,
        default_template=False).uuid

    event_template_name = 'my-event-template'
    event_keywords = 'TemplateForEventHappened'
    event_template = '${EVENT_NAME} IN ${EVENT_NAMESPACE}' \
                     'keyword1:ThisWordIsKeyWord' \
                     'keyword2:TemplateForEventHappened' \
                     'keyword3{PARAM_EVENT_SUBSCRIPTION_UUID}' \
                     '(Using for template changes email check)'
    event_template_uuid = zwt_ops.create_sns_text_template(
        event_template_name,
        application_platform_type,
        event_template,
        default_template=True).uuid

    # test update text template
    zwt_ops.update_sns_text_template(alarm_template_uuid,
                                     description='this is a new description',
                                     default_template=True)

    cond = res_ops.gen_query_conditions('uuid', '=', alarm_template_uuid)
    inv = res_ops.query_resource(res_ops.SNS_TEXT_TEMPLATE, cond)[0]
    if inv.defaultTemplate == False or inv.description != 'this is a new description':
        test_util.test_fail('change template fail')

    for i in range(threshold_3):
        data_volume_template = volume.create_template(
            bs_uuid_list, name="vol_temp_for_volume_test_" + str(i))
        test_dict.add_image(data_volume_template)

    # wait for reboot and send email
    time.sleep(30)
    test_lib.lib_robot_cleanup(test_dict)
    zwt_ops.delete_sns_text_template(alarm_template_uuid)
    zwt_ops.delete_sns_text_template(event_template_uuid)
    for alarm_uuid in alarm_uuid_list:
        zwt_ops.delete_alarm(alarm_uuid)
    zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    zwt_ops.delete_sns_application_platform(email_platform_uuid)

    if zwt_ops.check_keywords_in_email(
            pop_server, username, password, alarm_keywords,
            data_volume_template_count_alarm_uuid
    ) and zwt_ops.check_keywords_in_email(
            pop_server, username, password, alarm_keywords,
            data_volume_template_in_percent_alarm_uuid):
        test_util.test_pass('success check all keywords in the email')
    else:
        test_util.test_fail('cannt check all mail')
def test():
    global email_endpoint_uuid, email_platform_uuid, vm, disk_all_write_bytes_alarm_uuid, my_sns_topic_uuid
    smtp_server = 'smtp.zstack.io'
    pop_server = 'pop3.zstack.io'
    smtp_port = 25
    username = '******'
    password = '******'
    email_platform_name = 'Alarm_email'
    email_platform_uuid = zwt_ops.create_sns_email_platform(
        smtp_server, smtp_port, email_platform_name, username, password).uuid
    zwt_ops.validate_sns_email_platform(email_platform_uuid)
    email_endpoint_uuid = zwt_ops.create_sns_email_endpoint(
        username, 'test_qa', email_platform_uuid).uuid
    my_sns_topic = zwt_ops.create_sns_topic('my_sns_topic')
    my_sns_topic_uuid = my_sns_topic.uuid
    zwt_ops.subscribe_sns_topic(my_sns_topic_uuid, email_endpoint_uuid)

    namespace = 'ZStack/VM'
    less_than = 'LessThan'
    actions = [{"actionUuid": my_sns_topic_uuid, "actionType": "sns"}]
    period = 10
    threshold_3 = 1024 * 1024 * 1024
    disk_all_write_bytes = 'DiskAllWriteBytes'
    disk_all_write_bytes_alarm_uuid = zwt_ops.create_alarm(
        less_than,
        period,
        threshold_3,
        namespace,
        disk_all_write_bytes,
        name='disk_all_write_bytes',
        repeat_interval=20,
        actions=actions).uuid
    image_name = os.environ.get('imageName_s')
    l3_name = os.environ.get('l3VlanNetworkName1')
    vm = test_stub.create_vm('test_vm', image_name, l3_name)

    # wait for send email
    time.sleep(30)
    flag = zwt_ops.check_keywords_in_email(pop_server, username, password,
                                           disk_all_write_bytes,
                                           disk_all_write_bytes_alarm_uuid)
    if not flag:
        test_util.test_fail('cant receive alarm email ')

    zwt_ops.change_alarm_state(disk_all_write_bytes_alarm_uuid, 'disable')

    time.sleep(10)
    time_stamp = zwt_ops.get_boundary_words()
    zwt_ops.send_boundary_email(time_stamp)

    time.sleep(30)
    flag = zwt_ops.check_keywords_in_email(pop_server, username, password,
                                           disk_all_write_bytes,
                                           disk_all_write_bytes_alarm_uuid,
                                           time_stamp)
    if flag:
        test_util.test_fail(
            'the alarm had been changed state to Disabled,we should not receive the email,but we found flag is %s'
            % flag)

    time.sleep(10)
    zwt_ops.change_alarm_state(disk_all_write_bytes_alarm_uuid, 'enable')
    time.sleep(30)

    flag = zwt_ops.check_keywords_in_email(pop_server, username, password,
                                           disk_all_write_bytes,
                                           disk_all_write_bytes_alarm_uuid,
                                           time_stamp)
    if not flag:
        test_util.test_fail(
            'cant receive email when it change state to Enable.')

    vm.clean()
    zwt_ops.delete_alarm(disk_all_write_bytes_alarm_uuid)
    zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    zwt_ops.delete_sns_application_platform(email_platform_uuid)

    test_util.test_pass('success')
示例#12
0
def test():
    global endpoint_uuid_01, endpoint_uuid_02, sns_topic_uuid_01, sns_topic_uuid_02, alarm_uuid
    # create endpoint
    url_01 = 'https://oapi.dingtalk.com/robot/send?access_token=0be899d4bd0a7629961a5ccd3035dfba30d084b57944897838f1b601006dd151'
    url_02 = 'https://oapi.dingtalk.com/robot/send?access_token=0be899d4bd0a7629961a5ccd3035dfba30d084b57944897838f1b601006dd151'
    name_01 = 'dingtalkAtPerson'
    name_02 = 'dingtalkAtAll'
    phone_number = '+86-13999999999'
    endpoint_uuid_01 = zwt_ops.create_sns_dingtalk_endpoint(url_01,
                                                            name_01,
                                                            at_all=False).uuid
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_01)
    if not res_ops.query_resource(res_ops.SNS_DING_TALK_ENDPOINT, cond):
        test_util.test_fail('create sns dingtalk endpoint failed')
    zwt_ops.add_sns_dingtalk_at_person(phone_number, endpoint_uuid_01)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_01)
    inv = res_ops.query_resource(res_ops.SNS_DING_TALK_ENDPOINT, cond)[0]
    if phone_number not in inv.atPersonPhoneNumbers:
        test_util.test_fail('add sns dingtalk at person failed')
    zwt_ops.remove_sns_dingtalk_at_person(phone_number, endpoint_uuid_01)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_01)
    inv = res_ops.query_resource(res_ops.SNS_DING_TALK_ENDPOINT, cond)[0]
    if phone_number in inv.atPersonPhoneNumbers:
        test_util.test_fail('remove sns dingtalk at person failed')
    endpoint_uuid_02 = zwt_ops.create_sns_dingtalk_endpoint(url_02,
                                                            name_02,
                                                            at_all=True).uuid
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_02)
    if not res_ops.query_resource(res_ops.SNS_DING_TALK_ENDPOINT, cond):
        test_util.test_fail('create sns dingtalk endpoint failed')

    # update endpoint
    endpoint_new_name = 'dingtalkAtpersonNew'
    endpoint_description = 'this is a description for atperson'
    zwt_ops.update_sns_application_endpoint(endpoint_uuid_01,
                                            endpoint_new_name,
                                            endpoint_description)
    cond = res_ops.gen_query_conditions('name', '=', endpoint_new_name)
    endpoint = res_ops.query_resource(res_ops.SNS_DING_TALK_ENDPOINT, cond)[0]
    if endpoint.description != endpoint_description:
        test_util.test_fail('update sns application endpoint failed')

    # create sns topic
    sns_topic_uuid_01 = zwt_ops.create_sns_topic('sns_topic_01').uuid
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_01)
    if not res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('create sns topic failed')
    sns_topic_uuid_02 = zwt_ops.create_sns_topic('sns_topic_02').uuid
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_02)
    if not res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('create sns topic failed')

    # update sns topic
    topic_new_name = 'sns_topic_01_new'
    topic_description = 'this is a description for topic'
    zwt_ops.update_sns_topic(sns_topic_uuid_01, topic_new_name,
                             topic_description)
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_01)
    inv = res_ops.query_resource(res_ops.SNS_TOPIC, cond)[0]
    if inv.name != topic_new_name or inv.description != topic_description:
        test_util.test_fail('update sns topic failed')

    # subscribe sns topic
    zwt_ops.subscribe_sns_topic(sns_topic_uuid_01, endpoint_uuid_01)
    cond = res_ops.gen_query_conditions('endpoints.uuid', '=',
                                        endpoint_uuid_01)
    if not res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('subscribe sns topic failed')
    zwt_ops.subscribe_sns_topic(sns_topic_uuid_01, endpoint_uuid_02)
    cond = res_ops.gen_query_conditions('endpoints.uuid', '=',
                                        endpoint_uuid_02)
    if not res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('subscribe sns topic failed')
    zwt_ops.subscribe_sns_topic(sns_topic_uuid_02, endpoint_uuid_02)
    cond = res_ops.gen_query_conditions('endpoints.uuid', '=',
                                        endpoint_uuid_02)
    if len(res_ops.query_resource(res_ops.SNS_TOPIC, cond)) != 2:
        test_util.test_fail('subscribe sns topic failed')

    # create alarm
    namespace = 'ZStack/VM'
    actions = [{"actionUuid": sns_topic_uuid_01, "actionType": "sns"}]
    period = 60
    comparisonOperator = 'GreaterThanOrEqualTo'
    threshold = 10
    metric_name = 'CPUUsedUtilization'
    alarm = zwt_ops.create_alarm(comparisonOperator,
                                 period,
                                 threshold,
                                 namespace,
                                 metric_name,
                                 actions=actions)
    alarm_uuid = alarm.uuid
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)
    if not inv:
        test_util.test_fail('create alarm Failed')

    # test update alarm
    new_name = 'total_image_count_alarm'
    zwt_ops.update_alarm(alarm_uuid, name=new_name, period=10)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    if inv.period != 10 or inv.name != new_name:
        test_util.test_fail('update alarm Failed')

    # test add action to alarm
    action_type = 'sns'
    zwt_ops.add_action_to_alarm(alarm_uuid, sns_topic_uuid_02, action_type)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    flag = False
    for action in inv.actions:
        if action.actionUuid == sns_topic_uuid_02:
            flag = True
    if not flag:
        test_util.test_fail('add action to alarm failed')

    # test remove action from alarm
    zwt_ops.remove_action_from_alarm(alarm_uuid, sns_topic_uuid_02)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    flag = False
    for action in inv.actions:
        if action.actionUuid == sns_topic_uuid_02:
            flag = True
    if flag:
        test_util.test_fail('remove action from alarm failed')

    # test add label to alarm
    key = 'VMUuid'
    operator = 'Equal'
    value = '1a1d7395cf74474ca52deb80c41214a1'
    zwt_ops.add_label_to_alarm(alarm_uuid, key, value, operator)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    if not inv.labels:
        test_util.test_fail('add label to alarm failed')
    label_uuid = inv.labels[0].uuid

    # test remove label from alarm
    zwt_ops.remove_label_from_alarm(label_uuid)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    if inv.labels:
        test_util.test_fail('remove label from alarm failed')

    # test change state
    state_event = 'disable'
    state_result = 'Disabled'
    zwt_ops.change_alarm_state(alarm_uuid, state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change alarm state failed')
    zwt_ops.change_sns_application_endpoint_state(endpoint_uuid_02,
                                                  state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_APPLICATION_ENDPOINT, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change sns application endpoint failed')
    zwt_ops.change_sns_topic_state(sns_topic_uuid_02, state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_TOPIC, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change sns topic state failed')

    # test recover and delete
    state_event = 'enable'
    state_result = 'Enabled'
    zwt_ops.change_alarm_state(alarm_uuid, state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change alarm state failed')
    zwt_ops.change_sns_application_endpoint_state(endpoint_uuid_02,
                                                  state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_APPLICATION_ENDPOINT, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change sns application endpoint failed')
    zwt_ops.change_sns_topic_state(sns_topic_uuid_02, state_event)
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_TOPIC, cond)[0]
    if inv.state != state_result:
        test_util.test_fail('change sns topic state failed')
    zwt_ops.unsubscribe_sns_topic(sns_topic_uuid_01, endpoint_uuid_01)
    cond = res_ops.gen_query_conditions('endpoints.uuid', '=',
                                        endpoint_uuid_01)
    if res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('unsubscribe sns topic failed')
    zwt_ops.unsubscribe_sns_topic(sns_topic_uuid_01, endpoint_uuid_02)
    zwt_ops.unsubscribe_sns_topic(sns_topic_uuid_02, endpoint_uuid_02)
    cond = res_ops.gen_query_conditions('endpoints.uuid', '=',
                                        endpoint_uuid_02)
    if res_ops.query_resource(res_ops.SNS_TOPIC, cond):
        test_util.test_fail('unsubscribe sns topic failed')
    zwt_ops.delete_alarm(alarm_uuid)
    cond = res_ops.gen_query_conditions('uuid', '=', alarm_uuid)
    inv = res_ops.query_resource(res_ops.ALARM, cond)
    if inv:
        test_util.test_fail('delete alarm failed')
    zwt_ops.delete_sns_topic(sns_topic_uuid_01)
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_01)
    inv = res_ops.query_resource(res_ops.SNS_TOPIC, cond)
    if inv:
        test_util.test_fail('delete sns topic failed')
    zwt_ops.delete_sns_topic(sns_topic_uuid_02)
    cond = res_ops.gen_query_conditions('uuid', '=', sns_topic_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_TOPIC, cond)
    if inv:
        test_util.test_fail('delete sns topic failed')
    zwt_ops.delete_sns_application_endpoint(endpoint_uuid_01)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_01)
    inv = res_ops.query_resource(res_ops.SNS_APPLICATION_ENDPOINT, cond)
    if inv:
        test_util.test_fail('delete sns application endpoint  failed')
    zwt_ops.delete_sns_application_endpoint(endpoint_uuid_02)
    cond = res_ops.gen_query_conditions('uuid', '=', endpoint_uuid_02)
    inv = res_ops.query_resource(res_ops.SNS_APPLICATION_ENDPOINT, cond)
    if inv:
        test_util.test_fail('delete sns application endpoint  failed')

    test_util.test_pass(
        'success test alarm with dingtalk endpoint basic option!')
def test():
	global email_endpoint_uuid, email_platform_uuid, vm, disk_all_write_bytes_alarm_uuid, my_sns_topic_uuid
	smtp_server = os.environ.get('smtpServer')
	pop_server = os.environ.get('popServer')
	smtp_port = os.environ.get('smtpPort')
	username = os.environ.get('mailUsername')
	password = os.environ.get('mailPassword')
	email_platform_name = 'Alarm_email'
	email_platform_uuid = zwt_ops.create_sns_email_platform(smtp_server, smtp_port,
	                                                        email_platform_name, username, password).uuid
	zwt_ops.validate_sns_email_platform(email_platform_uuid)
	email_endpoint_uuid = zwt_ops.create_sns_email_endpoint(username, 'test_qa',
	                                                        email_platform_uuid).uuid
	my_sns_topic = zwt_ops.create_sns_topic('my_sns_topic')
	my_sns_topic_uuid = my_sns_topic.uuid
	zwt_ops.subscribe_sns_topic(my_sns_topic_uuid, email_endpoint_uuid)

	namespace = 'ZStack/VM'
	less_than = 'LessThan'
	actions = [{"actionUuid": my_sns_topic_uuid, "actionType": "sns"}]
	period = 10
	threshold_3 = 1024 * 1024 * 1024
	disk_all_write_bytes = 'DiskAllWriteBytes'
	disk_all_write_bytes_alarm_uuid = zwt_ops.create_alarm(less_than, period,
	                                                       threshold_3, namespace,
	                                                       disk_all_write_bytes,
	                                                       name='disk_all_write_bytes',
	                                                       repeat_interval=15,
	                                                       actions=actions).uuid
	image_name = os.environ.get('imageName_s')
	l3_name = os.environ.get('l3PublicNetworkName')
	vm = test_stub.create_vm('test_vm', image_name, l3_name)

	# wait for send email
	time.sleep(60)
	flag = zwt_ops.check_keywords_in_email(pop_server, username, password, disk_all_write_bytes,
	                                       disk_all_write_bytes_alarm_uuid)
	if not flag:
		test_util.test_fail('cant receive alarm email ')

	zwt_ops.change_alarm_state(disk_all_write_bytes_alarm_uuid, 'disable')

	time.sleep(10)
	time_stamp = zwt_ops.get_boundary_words()
	zwt_ops.send_boundary_email(time_stamp,smtp_server,username,password,username)

	time.sleep(30)
	flag = zwt_ops.check_keywords_in_email(pop_server, username, password, disk_all_write_bytes,
	                                       disk_all_write_bytes_alarm_uuid, time_stamp)
	if flag:
		test_util.test_fail(
			'the alarm had been changed state to Disabled,we should not receive the email,but we found flag is %s' %
			flag)

	time.sleep(10)
	zwt_ops.change_alarm_state(disk_all_write_bytes_alarm_uuid, 'enable')
	time.sleep(30)

	flag = zwt_ops.check_keywords_in_email(pop_server, username, password, disk_all_write_bytes,
	                                       disk_all_write_bytes_alarm_uuid, time_stamp)
	if not flag:
		test_util.test_fail('cant receive email when it change state to Enable.')

	vm.clean()
	zwt_ops.delete_alarm(disk_all_write_bytes_alarm_uuid)
	zwt_ops.delete_sns_topic(my_sns_topic_uuid)
	zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
	zwt_ops.delete_sns_application_platform(email_platform_uuid)

	test_util.test_pass('success')
def test():
    global my_sns_topic_uuid, email_endpoint_uuid, email_platform_uuid, event_template_uuid, \
        alarm_template_uuid, alarm_uuid_list, test_dict

    smtp_server = os.environ.get('smtpServer')
    pop_server = os.environ.get('popServer')
    smtp_port = os.environ.get('smtpPort')
    username = os.environ.get('mailUsername')
    password = os.environ.get('mailPassword')
    email_platform_name = 'Alarm_email'
    email_platform = zwt_ops.create_sns_email_platform(smtp_server, smtp_port,
                                                         email_platform_name, username, password)
    email_platform_uuid = email_platform.uuid
    try:
        zwt_ops.validate_sns_email_platform(email_platform_uuid)
    except:
        test_util.test_fail(
            'Validate SNS Email Platform Failed, Email Plarform: %s' % email_platform_uuid)
    email_endpoint_uuid = zwt_ops.create_sns_email_endpoint(username, 'test_qa',
                                                              email_platform_uuid).uuid

    my_sns_topic = zwt_ops.create_sns_topic('my_sns_topic')
    my_sns_topic_uuid = my_sns_topic.uuid
    zwt_ops.subscribe_sns_topic(my_sns_topic_uuid, email_endpoint_uuid)

    # create alarm
    namespace = 'ZStack/Image'
    greater_than_or_equal_to = 'GreaterThanOrEqualTo'
    greater_than = 'GreaterThan'
    actions = [{"actionUuid": my_sns_topic_uuid, "actionType": "sns"}]

    period = 10

    threshold_1 = 1
    threshold_3 = 3
    threshold_10 = 10
    threshold_50 = 50

    total_image_count = 'TotalImageCount'
    total_image_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to, period,
                                                          threshold_3, namespace,
                                                          total_image_count,
                                                          name='total-count-image',
                                                          repeat_interval=600,
                                                          actions=actions).uuid
    alarm_uuid_list.append(total_image_count_alarm_uuid)

    ready_image_count = 'ReadyImageCount'
    ready_image_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to, period,
                                                          threshold_3, namespace,
                                                          ready_image_count,
                                                          name='ready_image_count',
                                                          repeat_interval=600,
                                                          actions=actions).uuid
    alarm_uuid_list.append(ready_image_count_alarm_uuid)

    ready_image_in_percent = 'ReadyImageInPercent'
    ready_image_in_percent_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to, period,
                                                               threshold_1, namespace,
                                                               ready_image_in_percent,
                                                               name='ready_image_in_percent',
                                                               repeat_interval=600,
                                                               actions=actions).uuid
    alarm_uuid_list.append(ready_image_in_percent_alarm_uuid)

    root_volume_template_count = 'RootVolumeTemplateCount'
    root_volume_template_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to,
                                                                   period,
                                                                   threshold_3, namespace,
                                                                   root_volume_template_count,
                                                                   name='root_volume_template_count',
                                                                   repeat_interval=600,
                                                                   actions=actions, ).uuid
    alarm_uuid_list.append(root_volume_template_count_alarm_uuid)

    root_volume_template_in_percent = 'RootVolumeTemplateInPercent'
    root_volume_template_in_percent_alarm_uuid = zwt_ops.create_alarm(greater_than, period,
                                                                        threshold_1, namespace,
                                                                        root_volume_template_in_percent,
                                                                        name='root_volume_template_in_percent',
                                                                        repeat_interval=600,
                                                                        actions=actions).uuid
    alarm_uuid_list.append(root_volume_template_in_percent_alarm_uuid)

    data_volume_template_count = 'DataVolumeTemplateCount'
    data_volume_template_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to,
                                                                   period,
                                                                   threshold_3, namespace,
                                                                   data_volume_template_count,
                                                                   name='data_volume_template_count',
                                                                   repeat_interval=600,
                                                                   actions=actions).uuid
    alarm_uuid_list.append(data_volume_template_count_alarm_uuid)

    data_volume_template_in_percent = 'DataVolumeTemplateInPercent'
    data_volume_template_in_percent_alarm_uuid = zwt_ops.create_alarm(greater_than, period,
                                                                        threshold_1, namespace,
                                                                        data_volume_template_in_percent,
                                                                        name='data_volume_template_in_percent',
                                                                        repeat_interval=600,
                                                                        actions=actions).uuid
    alarm_uuid_list.append(data_volume_template_in_percent_alarm_uuid)

    iso_count = 'ISOCount'
    iso_count_alarm_uuid = zwt_ops.create_alarm(greater_than_or_equal_to, period, threshold_3,
                                                  namespace, iso_count, name='iso_count',
                                                  repeat_interval=600, actions=actions).uuid
    alarm_uuid_list.append(iso_count_alarm_uuid)

    iso_in_percent = 'ISOInPercent'
    iso_in_percent_alarm_uuid = zwt_ops.create_alarm(greater_than, period, threshold_1,
                                                       namespace,
                                                       iso_in_percent, name='iso_in_percent',
                                                       repeat_interval=600, actions=actions).uuid
    alarm_uuid_list.append(iso_in_percent_alarm_uuid)

    # create Image
    image_name = os.environ.get('imageName_s')
    l3_name = os.environ.get('l3VlanNetworkName1')
    vm_name='multihost_basic_vm'
    vm = test_stub.create_vm(vm_name,image_name,l3_name)
    test_dict.add_vm(vm)
    volume = test_stub.create_volume()
    test_dict.add_volume(volume)
    volume.attach(vm)
    zone_uuid = vm.get_vm().zoneUuid
    root_volume_uuid = test_lib.lib_get_root_volume_uuid(vm.get_vm())
    bs_uuid_list = test_lib.lib_get_backup_storage_uuid_list_by_zone(zone_uuid)

    image_option = test_util.ImageOption()
    image_option.set_root_volume_uuid(root_volume_uuid)
    image_option.set_format('qcow2')
    image_option.set_backup_storage_uuid_list(bs_uuid_list)
    # image_option.set_mediaType('ISO')

    for i in range(threshold_3):
        image_option.set_name('root_volume_template_for_test_' + str(i))
        root_volume_template = zstack_image_header.ZstackTestImage()
        root_volume_template.set_creation_option(image_option)
        root_volume_template.create()
        test_dict.add_image(root_volume_template)
        iso=test_stub.add_test_minimal_iso("iso_for_test_"+str(i))
        test_dict.add_image(iso)
    time.sleep(30)
    # before change template
    flag = zwt_ops.check_sns_email(pop_server, username, password, total_image_count,
                                     total_image_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, ready_image_count,
                                     ready_image_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, ready_image_in_percent,
                                     ready_image_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, root_volume_template_count,
                                     root_volume_template_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password,
                                     root_volume_template_in_percent,
                                     root_volume_template_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, iso_count,
                                     iso_count_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')
    flag = zwt_ops.check_sns_email(pop_server, username, password, iso_in_percent,
                                     iso_in_percent_alarm_uuid)
    if flag != 1:
        test_util.test_fail('No send event email')

    alarm_keywords = 'TemplateForAlarmOn'

    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         total_image_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         ready_image_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         ready_image_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         root_volume_template_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         root_volume_template_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         data_volume_template_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         data_volume_template_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         iso_count_alarm_uuid):
        test_util.test_fail('email already exsist before test')
    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         iso_in_percent_alarm_uuid):
        test_util.test_fail('email already exsist before test')

    application_platform_type = 'Email'
    alarm_template_name = 'my-alarm-template'
    alarm_template = '${ALARM_NAME} Change status to ${ALARM_CURRENT_STATUS}' \
                     'ALARM_UUID:${ALARM_UUID}' \
                     'keyword1:ThisWordIsKeyWord' \
                     'keyword2:TemplateForAlarmOn' \
                     '(Using for template changes email check)'
    alarm_template_uuid = zwt_ops.create_sns_text_template(alarm_template_name,
                                                             application_platform_type,
                                                             alarm_template,
                                                             default_template=False).uuid

    event_template_name = 'my-event-template'
    event_keywords = 'TemplateForEventHappened'
    event_template = '${EVENT_NAME} IN ${EVENT_NAMESPACE}' \
                     'keyword1:ThisWordIsKeyWord' \
                     'keyword2:TemplateForEventHappened' \
                     'keyword3{PARAM_EVENT_SUBSCRIPTION_UUID}' \
                     '(Using for template changes email check)'
    event_template_uuid = zwt_ops.create_sns_text_template(event_template_name,
                                                             application_platform_type,
                                                             event_template,
                                                             default_template=True).uuid

    # test update text template
    zwt_ops.update_sns_text_template(alarm_template_uuid, description='this is a new description',
                                       default_template=True)

    cond = res_ops.gen_query_conditions('uuid', '=', alarm_template_uuid)
    inv = res_ops.query_resource(res_ops.SNS_TEXT_TEMPLATE, cond)[0]
    if inv.defaultTemplate == False or inv.description != 'this is a new description':
        test_util.test_fail('change template fail')

    for i in range(threshold_3):
        data_volume_template = volume.create_template(bs_uuid_list,
                                                      name="vol_temp_for_volume_test_" + str(i))
        test_dict.add_image(data_volume_template)

    # wait for reboot and send email
    time.sleep(30)
    test_lib.lib_robot_cleanup(test_dict)
    zwt_ops.delete_sns_text_template(alarm_template_uuid)
    zwt_ops.delete_sns_text_template(event_template_uuid)
    for alarm_uuid in alarm_uuid_list:
        zwt_ops.delete_alarm(alarm_uuid)
    zwt_ops.delete_sns_topic(my_sns_topic_uuid)
    zwt_ops.delete_sns_application_endpoint(email_endpoint_uuid)
    zwt_ops.delete_sns_application_platform(email_platform_uuid)

    if zwt_ops.check_keywords_in_email(pop_server, username, password, alarm_keywords,
                                         data_volume_template_count_alarm_uuid) and zwt_ops.check_keywords_in_email(
        pop_server, username, password, alarm_keywords,
        data_volume_template_in_percent_alarm_uuid):
        test_util.test_pass('success check all keywords in the email')
    else:
        test_util.test_fail('cannt check all mail')