package com.bocloud.cmp.entity.enums;

import org.apache.commons.lang3.StringUtils;

/**
 * 资源大类
 *
 * @author dmw
 */
public enum ResourceCategory {
    /**
     * 计算资源
     */
    Computer,
    /**
     * 存储资源
     */
    Storage,
    /**
     * 网络资源
     */
    Network,
    /**
     * 数据库
     */
    Database,
    /**
     * 中间件
     */
    Middleware,
    /**
     * 负载
     */
    LoadBalance,
    /**
     * 交换机
     */
    Switch,
    /**
     * 路由器
     */
    Router,
    /**
     * 防火墙
     */
    Firewall,
    /**
     * 应用
     */
    Application,
    /**
     * 应用实例
     */
    AppInstance,
    /**
     * 应用服务器
     */
    WebServer,
    /**
     * 浮动IP
     */
    FloatingIp,
    /**
     * 防火墙策略
     */
    FirewallPolicy,
    /**
     * 防火墙规则
     */
    FirewallRule,
    /**
     * 安全组
     */
    SecurityGroup,
    /**
     * 镜像
     */
    Image,
    /**
     * 快照
     */
    Snapshot,
    /**
     * 存储桶
     */
    Bucket,
    /**
     * 云硬盘备份
     */
    Backup,
    /**
     * IPSec VPN
     */
    Vpn,
    /**
     * 裸金属服务器
     */
    BareMetal,
    /**
     * MySQL关系数据库
     */
    MySQL,
    /**
     * Oracle
     */
    Oracle,
    /**
     * 缓存数据库
     */
    Redis,
    /**
     * PostgreSQL关系数据库
     */
    PostgreSQL,
    /**
     * 对象存储
     */
    ObjectStorage,
    /**
     * 对象存储流量
     */
    StorageTraffic,
    /**
     * SqlServer数据库
     */
    SqlServer,
    /**
     * MongoDB数据库
     */
    MongoDB,
    /**
     * MemCache数据库
     */
    MemCache,
    /**
     * RabbitMQ消息队列
     */
    RabbitMQ,
    /**
     * ActiveMQ消息队列
     */
    ActiveMQ,
    /**
     * RocketMQ消息队列
     */
    RocketMQ,
    /**
     * Kafka消息队列
     */
    Kafka,
    /**
     * Nginx
     */
    Nginx,
    /**
     * Tomcat
     */
    Tomcat,
    /**
     * Apache
     */
    Apache,
    /**
     * Weblogic
     */
    Weblogic,
    /**
     * Websphere
     */
    Websphere,
    /**
     * Zookeeper
     */
    Zookeeper,
    /**
     * Etcd
     */
    Etcd,
    /**
     * vpc创建
     */
    Vpc,
    /**
     * 容器云
     */
    Kubernetes,
    /**
     * 运维
     */
    Operations,
    /**
     * windows域
     */
    WindowsDomain,
    /**
     * 资源编排
     */
    Fabric,
    /**
     * 堡垒机
     */
    Fortress,
    /**
     * 漏扫
     */
    Vulnerability;

    public static ResourceCategory getValue(String value) {
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        ResourceCategory[] categories = ResourceCategory.values();
        for (ResourceCategory category : categories) {
            if (category.name().equalsIgnoreCase(value)) {
                return category;
            }
        }
        return null;
    }
}
