'Create an ElastiCache cluster'

def create(self):

    if (self.status == 'available'):
        return
    if (self.status in ['creating', 'rebooting', 'modifying']):
        if self.wait:
            self._wait_for_status('available')
        return
    if (self.status == 'deleting'):
        if self.wait:
            self._wait_for_status('gone')
        else:
            msg = "'%s'    is    currently    deleting.    Cannot    create."
            self.module.fail_json(msg=(msg % self.name))
    try:
        response = self.conn.create_cache_cluster(cache_cluster_id=self.name, num_cache_nodes=self.num_nodes, cache_node_type=self.node_type, engine=self.engine, engine_version=self.cache_engine_version, cache_security_group_names=self.cache_security_groups, security_group_ids=self.security_group_ids, cache_parameter_group_name=self.cache_parameter_group, cache_subnet_group_name=self.cache_subnet_group, preferred_availability_zone=self.zone, port=self.cache_port)
    except boto.exception.BotoServerError as e:
        self.module.fail_json(msg=e.message)
    self._refresh_data()
    self.changed = True
    if self.wait:
        self._wait_for_status('available')
    return True
