def run(job, logger=None):
    if not logger: logger = get_thread_logger(__name__)

    # if job.status == 'FAILURE': return "", "", ""

    conn = ConnectionInfo.objects.get(name='servicenow')
    base_url = "{}://{}:{}".format(conn.protocol, conn.ip, conn.port)

    for server in job.server_set.all():
        job.set_progress('Removing CI {} from ServiceNow'.format(
            server.hostname))

        sysid = lookup_ci_sysid(server.resource_handler_svr_id, base_url, conn,
                                logger)
        if not sysid:
            job.set_progress("Unable to locate {} in ServiceNow".format(
                server.hostname))
            return "", "", ""

        response = delete_ci(sysid, base_url, conn, logger)
        if 200 < response.status_code >= 300:
            err = ('Failed to create ServiceNow CI, response from '
                   'ServiceNow:\n{}'.format(response.content))
            job.set_progress("Unable to remove {} from ServiceNow".format(
                server.hostname))
            logger.error(err)

    return "", "", ""
def run(job, logger=None):
    if not logger: logger = get_thread_logger(__name__)

    # if job.status == 'FAILURE': return "", "", ""

    conn = ConnectionInfo.objects.get(name='servicenow')
    base_url = "{}://{}:{}".format(conn.protocol, conn.ip, conn.port)

    for server in job.server_set.all():
        job.set_progress('Removing CI {} from ServiceNow'.format(server.hostname))

        sysid = lookup_ci_sysid(server.resource_handler_svr_id, base_url, conn, logger)
        if not sysid:
            job.set_progress("Unable to locate {} in ServiceNow".format(server.hostname))
            return "", "", ""

        response = delete_ci(sysid, base_url, conn, logger)
        if 200 < response.status_code >= 300:
            err = (
                'Failed to create ServiceNow CI, response from '
                'ServiceNow:\n{}'.format(response.content)
            )
            job.set_progress("Unable to remove {} from ServiceNow".format(server.hostname))
            logger.error(err)

    return "", "", ""
def run(job, logger=None):
    if not logger:
        logger = get_thread_logger(__name__)

    if job.status == 'FAILURE':
        return "", "", ""

    conn = ConnectionInfo.objects.get(name='servicenow')
    assert isinstance(conn, ConnectionInfo)

    servicenow_url = "{}://{}:{}".format(conn.protocol, conn.ip, conn.port)

    server = job.server_set.last()  # prov job only has one server in set
    assert isinstance(server, Server)

    job.set_progress(
        'Creating new CI in ServiceNow for server {}'.format(server.hostname))
    url = servicenow_url + "/api/now/table/{}".format("cmdb_ci_server")

    # column names for tables found at System Definition -> Tables
    table_columns = {
        'name': server.hostname,
        'company': server.group.name,
        'serial_number': server.resource_handler_svr_id,
        'asset_tag': server.resource_handler_svr_id,
        'operating_system': server.os_build.name,
        'os_version': server.os_build.name,
        'disk_space': server.disk_size,
        'cpu_core_count': server.cpu_cnt,
        'u_host_type': 'Virtual Host',
        'u_environment': 'No Environment',
        'ip_address': server.ip,
        'manufacturer': 'VMware',
        # 'ram': server.mem_size * 1024,
        'short_description': 'Created from CloudBolt job ID {}'.format(job.id),
    }

    json_data = json.dumps(table_columns)

    # create the CI
    response = request_new_ci(json_data, conn, url, logger=logger)
    if response.status_code != 201:
        err = (
            'Failed to create ServiceNow CI, response from '
            'ServiceNow:\n{}'.format(response.content)
        )
        return "FAILURE", "", err

    return "", "", ""
Example #4
0
def run(job, logger=None):
    
    if not logger:
        logger = get_thread_logger(__name__)

    if job.status == 'FAILURE':
        return "", "", ""

    conn = ConnectionInfo.objects.get(name='servicenow')
    assert isinstance(conn, ConnectionInfo)

    server = job.server_set.last()  # prov job only has one server in set
    assert isinstance(server, Server)

    job.set_progress(
        'Creating new CI in ServiceNow for server {}'.format(server.hostname))
    url = servicenow_url + "/api/now/table/{}".format("cmdb_ci_server")

    # column names for tables found at System Definition -> Tables
    table_columns = {
        'name': server.hostname,
        'company': server.group.name,
        'serial_number': server.resource_handler_svr_id,
        'asset_tag': server.resource_handler_svr_id,
        'operating_system': server.os_build.name,
        'os_version': server.os_build.name,
        'disk_space': server.disk_size,
        'cpu_core_count': server.cpu_cnt,
        'u_host_type': 'Virtual Host',
        'u_environment': 'No Environment',
        'ip_address': server.ip,
        'manufacturer': 'VMware',
        # 'ram': server.mem_size * 1024,
        'short_description': 'Created from CloudBolt job ID {}'.format(job.id),
    }

    json_data = json.dumps(table_columns)

    # create the CI
    response = request_new_ci(json_data, conn, url, logger=logger)
    if response.status_code != 201:
        err = (
            'Failed to create ServiceNow CI, response from '
            'ServiceNow:\n{}'.format(response.content)
        )
        return "FAILURE", "", err

    return "", "", ""
"""
Functions used by os_info.views
"""
import json
from infrastructure.models import CustomField
from utilities.logger import get_thread_logger

logger = get_thread_logger(__name__)

WIN_SVC_TYPES = {
    0x1: ('SERVICE_KERNEL_DRIVER', 'Driver'),
    0x2: ('SERVICE_FILE_SYSTEM_DRIVER', 'File System Driver'),
    0x10: ('SERVICE_WIN32_OWN_PROCESS', 'Runs in Own Process'),
    0x20: ('SERVICE_WIN32_SHARE_PROCESS', 'Shares Process'),
    0x100: ('SERVICE_INTERACTIVE_PROCESS', 'Interacts With Desktop')
}

WIN_SVC_STATES = {
    1: ('SERVICE_STOPPED', 'Stopped'),
    2: ('SERVICE_START_PENDING', 'Starting'),
    3: ('SERVICE_STOP_PENDING', 'Stopping'),
    4: ('SERVICE_RUNNING', 'Running'),
    5: ('SERVICE_CONTINUE_PENDING', 'Continue Pending'),
    6: ('SERVICE_PAUSE_PENDING', 'Pause Pending'),
    7: ('SERVICE_PAUSED', 'Paused')
}


def create_os_info_parameters_if_needed():
    """
    This UI extension is smart enough to create the CFs it needs. Six fewer steps for admins to do.