<gh_stars>10-100
# coding: utf-8

"""
    vserver

    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from ncloud_vserver.model.common_code import CommonCode  # noqa: F401,E501


class ServerInstance(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'server_instance_no': 'str',
        'server_name': 'str',
        'server_description': 'str',
        'cpu_count': 'int',
        'memory_size': 'int',
        'platform_type': 'CommonCode',
        'login_key_name': 'str',
        'public_ip_instance_no': 'str',
        'public_ip': 'str',
        'server_instance_status': 'CommonCode',
        'server_instance_operation': 'CommonCode',
        'server_instance_status_name': 'str',
        'create_date': 'str',
        'uptime': 'str',
        'server_image_product_code': 'str',
        'server_product_code': 'str',
        'is_protect_server_termination': 'bool',
        'zone_code': 'str',
        'region_code': 'str',
        'vpc_no': 'str',
        'subnet_no': 'str',
        'network_interface_no_list': 'list[str]',
        'init_script_no': 'str',
        'server_instance_type': 'CommonCode',
        'base_block_storage_disk_type': 'CommonCode',
        'base_block_storage_disk_detail_type': 'CommonCode',
        'placement_group_no': 'str'
    }

    attribute_map = {
        'server_instance_no': 'serverInstanceNo',
        'server_name': 'serverName',
        'server_description': 'serverDescription',
        'cpu_count': 'cpuCount',
        'memory_size': 'memorySize',
        'platform_type': 'platformType',
        'login_key_name': 'loginKeyName',
        'public_ip_instance_no': 'publicIpInstanceNo',
        'public_ip': 'publicIp',
        'server_instance_status': 'serverInstanceStatus',
        'server_instance_operation': 'serverInstanceOperation',
        'server_instance_status_name': 'serverInstanceStatusName',
        'create_date': 'createDate',
        'uptime': 'uptime',
        'server_image_product_code': 'serverImageProductCode',
        'server_product_code': 'serverProductCode',
        'is_protect_server_termination': 'isProtectServerTermination',
        'zone_code': 'zoneCode',
        'region_code': 'regionCode',
        'vpc_no': 'vpcNo',
        'subnet_no': 'subnetNo',
        'network_interface_no_list': 'networkInterfaceNoList',
        'init_script_no': 'initScriptNo',
        'server_instance_type': 'serverInstanceType',
        'base_block_storage_disk_type': 'baseBlockStorageDiskType',
        'base_block_storage_disk_detail_type': 'baseBlockStorageDiskDetailType',
        'placement_group_no': 'placementGroupNo'
    }

    def __init__(self, server_instance_no=None, server_name=None, server_description=None, cpu_count=None, memory_size=None, platform_type=None, login_key_name=None, public_ip_instance_no=None, public_ip=None, server_instance_status=None, server_instance_operation=None, server_instance_status_name=None, create_date=None, uptime=None, server_image_product_code=None, server_product_code=None, is_protect_server_termination=None, zone_code=None, region_code=None, vpc_no=None, subnet_no=None, network_interface_no_list=None, init_script_no=None, server_instance_type=None, base_block_storage_disk_type=None, base_block_storage_disk_detail_type=None, placement_group_no=None):  # noqa: E501
        """ServerInstance - a model defined in Swagger"""  # noqa: E501

        self._server_instance_no = None
        self._server_name = None
        self._server_description = None
        self._cpu_count = None
        self._memory_size = None
        self._platform_type = None
        self._login_key_name = None
        self._public_ip_instance_no = None
        self._public_ip = None
        self._server_instance_status = None
        self._server_instance_operation = None
        self._server_instance_status_name = None
        self._create_date = None
        self._uptime = None
        self._server_image_product_code = None
        self._server_product_code = None
        self._is_protect_server_termination = None
        self._zone_code = None
        self._region_code = None
        self._vpc_no = None
        self._subnet_no = None
        self._network_interface_no_list = None
        self._init_script_no = None
        self._server_instance_type = None
        self._base_block_storage_disk_type = None
        self._base_block_storage_disk_detail_type = None
        self._placement_group_no = None
        self.discriminator = None

        if server_instance_no is not None:
            self.server_instance_no = server_instance_no
        if server_name is not None:
            self.server_name = server_name
        if server_description is not None:
            self.server_description = server_description
        if cpu_count is not None:
            self.cpu_count = cpu_count
        if memory_size is not None:
            self.memory_size = memory_size
        if platform_type is not None:
            self.platform_type = platform_type
        if login_key_name is not None:
            self.login_key_name = login_key_name
        if public_ip_instance_no is not None:
            self.public_ip_instance_no = public_ip_instance_no
        if public_ip is not None:
            self.public_ip = public_ip
        if server_instance_status is not None:
            self.server_instance_status = server_instance_status
        if server_instance_operation is not None:
            self.server_instance_operation = server_instance_operation
        if server_instance_status_name is not None:
            self.server_instance_status_name = server_instance_status_name
        if create_date is not None:
            self.create_date = create_date
        if uptime is not None:
            self.uptime = uptime
        if server_image_product_code is not None:
            self.server_image_product_code = server_image_product_code
        if server_product_code is not None:
            self.server_product_code = server_product_code
        if is_protect_server_termination is not None:
            self.is_protect_server_termination = is_protect_server_termination
        if zone_code is not None:
            self.zone_code = zone_code
        if region_code is not None:
            self.region_code = region_code
        if vpc_no is not None:
            self.vpc_no = vpc_no
        if subnet_no is not None:
            self.subnet_no = subnet_no
        if network_interface_no_list is not None:
            self.network_interface_no_list = network_interface_no_list
        if init_script_no is not None:
            self.init_script_no = init_script_no
        if server_instance_type is not None:
            self.server_instance_type = server_instance_type
        if base_block_storage_disk_type is not None:
            self.base_block_storage_disk_type = base_block_storage_disk_type
        if base_block_storage_disk_detail_type is not None:
            self.base_block_storage_disk_detail_type = base_block_storage_disk_detail_type
        if placement_group_no is not None:
            self.placement_group_no = placement_group_no

    @property
    def server_instance_no(self):
        """Gets the server_instance_no of this ServerInstance.  # noqa: E501

        서버인스턴스번호  # noqa: E501

        :return: The server_instance_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_instance_no

    @server_instance_no.setter
    def server_instance_no(self, server_instance_no):
        """Sets the server_instance_no of this ServerInstance.

        서버인스턴스번호  # noqa: E501

        :param server_instance_no: The server_instance_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_instance_no = server_instance_no

    @property
    def server_name(self):
        """Gets the server_name of this ServerInstance.  # noqa: E501

        서버이름  # noqa: E501

        :return: The server_name of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_name

    @server_name.setter
    def server_name(self, server_name):
        """Sets the server_name of this ServerInstance.

        서버이름  # noqa: E501

        :param server_name: The server_name of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_name = server_name

    @property
    def server_description(self):
        """Gets the server_description of this ServerInstance.  # noqa: E501

        서버설명  # noqa: E501

        :return: The server_description of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_description

    @server_description.setter
    def server_description(self, server_description):
        """Sets the server_description of this ServerInstance.

        서버설명  # noqa: E501

        :param server_description: The server_description of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_description = server_description

    @property
    def cpu_count(self):
        """Gets the cpu_count of this ServerInstance.  # noqa: E501

        CPU개수  # noqa: E501

        :return: The cpu_count of this ServerInstance.  # noqa: E501
        :rtype: int
        """
        return self._cpu_count

    @cpu_count.setter
    def cpu_count(self, cpu_count):
        """Sets the cpu_count of this ServerInstance.

        CPU개수  # noqa: E501

        :param cpu_count: The cpu_count of this ServerInstance.  # noqa: E501
        :type: int
        """

        self._cpu_count = cpu_count

    @property
    def memory_size(self):
        """Gets the memory_size of this ServerInstance.  # noqa: E501

        메모리사이즈  # noqa: E501

        :return: The memory_size of this ServerInstance.  # noqa: E501
        :rtype: int
        """
        return self._memory_size

    @memory_size.setter
    def memory_size(self, memory_size):
        """Sets the memory_size of this ServerInstance.

        메모리사이즈  # noqa: E501

        :param memory_size: The memory_size of this ServerInstance.  # noqa: E501
        :type: int
        """

        self._memory_size = memory_size

    @property
    def platform_type(self):
        """Gets the platform_type of this ServerInstance.  # noqa: E501

        플랫폼유형  # noqa: E501

        :return: The platform_type of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._platform_type

    @platform_type.setter
    def platform_type(self, platform_type):
        """Sets the platform_type of this ServerInstance.

        플랫폼유형  # noqa: E501

        :param platform_type: The platform_type of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._platform_type = platform_type

    @property
    def login_key_name(self):
        """Gets the login_key_name of this ServerInstance.  # noqa: E501

        로그인키이름  # noqa: E501

        :return: The login_key_name of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._login_key_name

    @login_key_name.setter
    def login_key_name(self, login_key_name):
        """Sets the login_key_name of this ServerInstance.

        로그인키이름  # noqa: E501

        :param login_key_name: The login_key_name of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._login_key_name = login_key_name

    @property
    def public_ip_instance_no(self):
        """Gets the public_ip_instance_no of this ServerInstance.  # noqa: E501

        공인IP인스턴스번호  # noqa: E501

        :return: The public_ip_instance_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._public_ip_instance_no

    @public_ip_instance_no.setter
    def public_ip_instance_no(self, public_ip_instance_no):
        """Sets the public_ip_instance_no of this ServerInstance.

        공인IP인스턴스번호  # noqa: E501

        :param public_ip_instance_no: The public_ip_instance_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._public_ip_instance_no = public_ip_instance_no

    @property
    def public_ip(self):
        """Gets the public_ip of this ServerInstance.  # noqa: E501

        공인IP주소  # noqa: E501

        :return: The public_ip of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._public_ip

    @public_ip.setter
    def public_ip(self, public_ip):
        """Sets the public_ip of this ServerInstance.

        공인IP주소  # noqa: E501

        :param public_ip: The public_ip of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._public_ip = public_ip

    @property
    def server_instance_status(self):
        """Gets the server_instance_status of this ServerInstance.  # noqa: E501

        서버인스턴스상태  # noqa: E501

        :return: The server_instance_status of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._server_instance_status

    @server_instance_status.setter
    def server_instance_status(self, server_instance_status):
        """Sets the server_instance_status of this ServerInstance.

        서버인스턴스상태  # noqa: E501

        :param server_instance_status: The server_instance_status of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._server_instance_status = server_instance_status

    @property
    def server_instance_operation(self):
        """Gets the server_instance_operation of this ServerInstance.  # noqa: E501

        서버인스턴스OP  # noqa: E501

        :return: The server_instance_operation of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._server_instance_operation

    @server_instance_operation.setter
    def server_instance_operation(self, server_instance_operation):
        """Sets the server_instance_operation of this ServerInstance.

        서버인스턴스OP  # noqa: E501

        :param server_instance_operation: The server_instance_operation of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._server_instance_operation = server_instance_operation

    @property
    def server_instance_status_name(self):
        """Gets the server_instance_status_name of this ServerInstance.  # noqa: E501

        서버인스턴스상태이름  # noqa: E501

        :return: The server_instance_status_name of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_instance_status_name

    @server_instance_status_name.setter
    def server_instance_status_name(self, server_instance_status_name):
        """Sets the server_instance_status_name of this ServerInstance.

        서버인스턴스상태이름  # noqa: E501

        :param server_instance_status_name: The server_instance_status_name of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_instance_status_name = server_instance_status_name

    @property
    def create_date(self):
        """Gets the create_date of this ServerInstance.  # noqa: E501

        생성일시  # noqa: E501

        :return: The create_date of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._create_date

    @create_date.setter
    def create_date(self, create_date):
        """Sets the create_date of this ServerInstance.

        생성일시  # noqa: E501

        :param create_date: The create_date of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._create_date = create_date

    @property
    def uptime(self):
        """Gets the uptime of this ServerInstance.  # noqa: E501

        업시간  # noqa: E501

        :return: The uptime of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._uptime

    @uptime.setter
    def uptime(self, uptime):
        """Sets the uptime of this ServerInstance.

        업시간  # noqa: E501

        :param uptime: The uptime of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._uptime = uptime

    @property
    def server_image_product_code(self):
        """Gets the server_image_product_code of this ServerInstance.  # noqa: E501

        서버이미지상품코드  # noqa: E501

        :return: The server_image_product_code of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_image_product_code

    @server_image_product_code.setter
    def server_image_product_code(self, server_image_product_code):
        """Sets the server_image_product_code of this ServerInstance.

        서버이미지상품코드  # noqa: E501

        :param server_image_product_code: The server_image_product_code of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_image_product_code = server_image_product_code

    @property
    def server_product_code(self):
        """Gets the server_product_code of this ServerInstance.  # noqa: E501

        서버상품코드  # noqa: E501

        :return: The server_product_code of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._server_product_code

    @server_product_code.setter
    def server_product_code(self, server_product_code):
        """Sets the server_product_code of this ServerInstance.

        서버상품코드  # noqa: E501

        :param server_product_code: The server_product_code of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._server_product_code = server_product_code

    @property
    def is_protect_server_termination(self):
        """Gets the is_protect_server_termination of this ServerInstance.  # noqa: E501

        서버반납보호설정여부  # noqa: E501

        :return: The is_protect_server_termination of this ServerInstance.  # noqa: E501
        :rtype: bool
        """
        return self._is_protect_server_termination

    @is_protect_server_termination.setter
    def is_protect_server_termination(self, is_protect_server_termination):
        """Sets the is_protect_server_termination of this ServerInstance.

        서버반납보호설정여부  # noqa: E501

        :param is_protect_server_termination: The is_protect_server_termination of this ServerInstance.  # noqa: E501
        :type: bool
        """

        self._is_protect_server_termination = is_protect_server_termination

    @property
    def zone_code(self):
        """Gets the zone_code of this ServerInstance.  # noqa: E501

        ZONE코드  # noqa: E501

        :return: The zone_code of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._zone_code

    @zone_code.setter
    def zone_code(self, zone_code):
        """Sets the zone_code of this ServerInstance.

        ZONE코드  # noqa: E501

        :param zone_code: The zone_code of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._zone_code = zone_code

    @property
    def region_code(self):
        """Gets the region_code of this ServerInstance.  # noqa: E501

        REGION코드  # noqa: E501

        :return: The region_code of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._region_code

    @region_code.setter
    def region_code(self, region_code):
        """Sets the region_code of this ServerInstance.

        REGION코드  # noqa: E501

        :param region_code: The region_code of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._region_code = region_code

    @property
    def vpc_no(self):
        """Gets the vpc_no of this ServerInstance.  # noqa: E501

        VPC번호  # noqa: E501

        :return: The vpc_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._vpc_no

    @vpc_no.setter
    def vpc_no(self, vpc_no):
        """Sets the vpc_no of this ServerInstance.

        VPC번호  # noqa: E501

        :param vpc_no: The vpc_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._vpc_no = vpc_no

    @property
    def subnet_no(self):
        """Gets the subnet_no of this ServerInstance.  # noqa: E501

        서브넷번호  # noqa: E501

        :return: The subnet_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._subnet_no

    @subnet_no.setter
    def subnet_no(self, subnet_no):
        """Sets the subnet_no of this ServerInstance.

        서브넷번호  # noqa: E501

        :param subnet_no: The subnet_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._subnet_no = subnet_no

    @property
    def network_interface_no_list(self):
        """Gets the network_interface_no_list of this ServerInstance.  # noqa: E501

        네트워크인터페이스번호리스트  # noqa: E501

        :return: The network_interface_no_list of this ServerInstance.  # noqa: E501
        :rtype: list[str]
        """
        return self._network_interface_no_list

    @network_interface_no_list.setter
    def network_interface_no_list(self, network_interface_no_list):
        """Sets the network_interface_no_list of this ServerInstance.

        네트워크인터페이스번호리스트  # noqa: E501

        :param network_interface_no_list: The network_interface_no_list of this ServerInstance.  # noqa: E501
        :type: list[str]
        """

        self._network_interface_no_list = network_interface_no_list

    @property
    def init_script_no(self):
        """Gets the init_script_no of this ServerInstance.  # noqa: E501

        초기화스크립트번호  # noqa: E501

        :return: The init_script_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._init_script_no

    @init_script_no.setter
    def init_script_no(self, init_script_no):
        """Sets the init_script_no of this ServerInstance.

        초기화스크립트번호  # noqa: E501

        :param init_script_no: The init_script_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._init_script_no = init_script_no

    @property
    def server_instance_type(self):
        """Gets the server_instance_type of this ServerInstance.  # noqa: E501

        서버인스턴스유형  # noqa: E501

        :return: The server_instance_type of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._server_instance_type

    @server_instance_type.setter
    def server_instance_type(self, server_instance_type):
        """Sets the server_instance_type of this ServerInstance.

        서버인스턴스유형  # noqa: E501

        :param server_instance_type: The server_instance_type of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._server_instance_type = server_instance_type

    @property
    def base_block_storage_disk_type(self):
        """Gets the base_block_storage_disk_type of this ServerInstance.  # noqa: E501

        기본블록스토리지디스크유형  # noqa: E501

        :return: The base_block_storage_disk_type of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._base_block_storage_disk_type

    @base_block_storage_disk_type.setter
    def base_block_storage_disk_type(self, base_block_storage_disk_type):
        """Sets the base_block_storage_disk_type of this ServerInstance.

        기본블록스토리지디스크유형  # noqa: E501

        :param base_block_storage_disk_type: The base_block_storage_disk_type of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._base_block_storage_disk_type = base_block_storage_disk_type

    @property
    def base_block_storage_disk_detail_type(self):
        """Gets the base_block_storage_disk_detail_type of this ServerInstance.  # noqa: E501

        기본블록스토리지디스크상세유형  # noqa: E501

        :return: The base_block_storage_disk_detail_type of this ServerInstance.  # noqa: E501
        :rtype: CommonCode
        """
        return self._base_block_storage_disk_detail_type

    @base_block_storage_disk_detail_type.setter
    def base_block_storage_disk_detail_type(self, base_block_storage_disk_detail_type):
        """Sets the base_block_storage_disk_detail_type of this ServerInstance.

        기본블록스토리지디스크상세유형  # noqa: E501

        :param base_block_storage_disk_detail_type: The base_block_storage_disk_detail_type of this ServerInstance.  # noqa: E501
        :type: CommonCode
        """

        self._base_block_storage_disk_detail_type = base_block_storage_disk_detail_type

    @property
    def placement_group_no(self):
        """Gets the placement_group_no of this ServerInstance.  # noqa: E501

        물리배치그룹번호  # noqa: E501

        :return: The placement_group_no of this ServerInstance.  # noqa: E501
        :rtype: str
        """
        return self._placement_group_no

    @placement_group_no.setter
    def placement_group_no(self, placement_group_no):
        """Sets the placement_group_no of this ServerInstance.

        물리배치그룹번호  # noqa: E501

        :param placement_group_no: The placement_group_no of this ServerInstance.  # noqa: E501
        :type: str
        """

        self._placement_group_no = placement_group_no

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ServerInstance):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
