Esempio n. 1
0
def main():

    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set HTTP transport " + r + "\n")
        sys.exit(2)

    if (command == "scheduleList"):
        schedule_list(s)

    elif (command == "relationshipStatus"):
        relationship_status(s)

    else:
        print("Invalid operation \n")
        print_usage()
Esempio n. 2
0
def main():
    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set HTTP transport" + r + "\n")
        sys.exit(2)

    if (command == "lun"):
        process_LUN(s)

    elif (command == "igroup"):
        process_igroup(s)

    elif (command == "fcp"):
        process_fcp(s)

    elif (command == "iscsi"):
        process_iscsi(s)

    else:
        print("Invalid operation\n")
        print_usage()
Esempio n. 3
0
def main():
    s = NaServer(filer, 1, 3)
    resp = s.set_style('LOGIN')

    if (resp and resp.results_errno() != 0):
        r = resp.results_reason()
        print("Failed to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)
    resp = s.set_transport_type('HTTP')

    if (resp and resp.results_errno() != 0):
        r = resp.results_reason()
        print("Unable to set HTTP transport " + r + "\n")
        sys.exit(2)

    if ((command == "raw-capacity") or (command == "formatted-capacity")
            or (command == "spare-capacity")):
        calc_raw_fmt_spare_capacity(s)

    elif ((command == "raid-overhead") or (command == "wafl-overhead")):
        calc_raid_wafl_overhead(s)

    elif (command == "allocated-capacity"):
        calc_allocated_capacity(s)

    elif (command == "avail-user-data-capacity"):
        calc_avail_user_data_capacity(s)

    elif (command == "provisioning-capacity"):
        calc_provisioning_capacity(s)

    else:
        print("Invalid operation\n")
Esempio n. 4
0
def aggr_rename(module):

	cluster = module.params['cluster']
	user_name = module.params['user_name']
	password = module.params['password']
	aggr = module.params['aggr']
	new_aggr_name = module.params['new_aggr_name']

	results = {}

	results['changed'] = False

	s = NaServer(cluster, 1 , 0)
	s.set_server_type("FILER")
	s.set_transport_type("HTTPS")
	s.set_port(443)
	s.set_style("LOGIN")
	s.set_admin_user(user_name, password)

	api = NaElement("aggr-rename")
	api.child_add_string("aggregate",aggr)
	api.child_add_string("new-aggregate-name",new_aggr_name)
	xo = s.invoke_elem(api)

	if(xo.results_errno() != 0):
		r = xo.results_reason()
		module.fail_json(msg=r)
		results['changed'] = False

	else:
		results['changed'] = True

	return results
Esempio n. 5
0
def main():
    s = NaServer(filer, 1, 3)
    resp = s.set_transport_type('HTTP')

    if (resp and resp.results_errno() != 0):
        r = resp.results_reason()
        print("Unable to set HTTP transport " + r + "\n")
        sys.exit(2)

    resp = s.set_style('LOGIN')

    if (resp and resp.results_errno() != 0):
        r = resp.results_reason()
        print("Failed to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)

    if (command == "file-get-snaplock-retention-time"):
        file_get_retention(s)

    elif (command == "file-set-snaplock-retention-time"):
        file_set_retention(s)

    elif (command == "file-snaplock-retention-time-list-info"):
        file_get_retention_list(s)

    elif (command == "file-get-snaplock-retention-time-list-info-max"):
        file_get_retention_list_info_max(s)

    else:
        print("Invalid operation\n")
        print_usage()
def snmp_community_add(module):

  cluster = module.params['cluster']
  user_name = module.params['user_name']
  password = module.params['password']
  vserver = module.params['vserver']
  access_control = module.params['access_control']
  community = module.params['community']

  results = {}

  results['changed'] = False

  s = NaServer(cluster, 1 , 15)
  s.set_server_type("FILER")
  s.set_transport_type("HTTPS")
  s.set_port(443)
  s.set_style("LOGIN")
  s.set_admin_user(user_name, password)
  s.set_vserver(vserver)

  api = NaElement("snmp-community-add")
  api.child_add_string("access-control", access_control)
  api.child_add_string("community", community)
  xo = s.invoke_elem(api)

  if(xo.results_errno() != 0):
    r = xo.results_reason()
    module.fail_json(msg=r)
    results['changed'] = False

  else:
    results['changed'] = True

  return results
def vol_size(module):

    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    vserver = module.params['vserver']
    volume = module.params['volume']
    size = module.params['size']

    results = {}

    results['changed'] = False

    s = NaServer(cluster, 1, 15)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(user_name, password)
    s.set_vserver(vserver)

    api = NaElement("volume-size")
    api.child_add_string("volume", volume)
    api.child_add_string("new-size", size)
    xo = s.invoke_elem(api)

    if (xo.results_errno() != 0):
        r = xo.results_reason()
        module.fail_json(msg=r)
        results['changed'] = False

    else:
        results['changed'] = True

    return results
Esempio n. 8
0
 def __init__(self, configname):
     zfscredfilename = os.path.join(scriptpath(), 'netappcredentials.cfg')
     if not os.path.isfile(zfscredfilename):
         raise Exception(
             self._exceptionbase,
             "Configuration file %s not found" % zfscredfilename)
     # Authentication information
     zfscredconfig = SafeConfigParser()
     zfscredconfig.read(zfscredfilename)
     zfsauth = (zfscredconfig.get('netappcredentials', 'user'),
                zfscredconfig.get('netappcredentials', 'password'))
     #
     self._filer = Configuration.get('filer', 'netapp')
     self._srv = NaServer(self._filer, 1, 1)
     # Check if CA certificate validation is needed
     try:
         self._cacert = os.path.join(scriptpath(), 'certs',
                                     Configuration.get('cacert', 'netapp'))
     except NoOptionError:
         self._cacert = None
     if self._cacert:
         self._srv.set_ca_certs(self._cacert)
         self._srv.set_server_cert_verification(True)
         self._srv.set_hostname_verification(False)
     #
     self._srv.set_admin_user(
         zfscredconfig.get('netappcredentials', 'user'),
         zfscredconfig.get('netappcredentials', 'password'))
     self._volprefix = Configuration.get('volumeprefix', 'netapp')
     self._volname = "%s%s" % (self._volprefix, configname)
     super(Netapp, self).__init__(configname)
Esempio n. 9
0
def connect_svm(in_args):

    # type and syntax checking on command line args
    obj_regexp = re.compile(
        r'^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](\.[a-zA-Z0-9\-]{2,}){0,6}$'
    )
    if (not (obj_regexp.match(in_args.svm))):
        sys.exit(
            "error: the svm parameter must be either an IP address or a hostname"
        )

    # connect to svm
    obj_svm = NaServer(in_args.svm, 1, 3)
    obj_svm.set_transport_type('HTTPS')
    if (in_args.cert is None):
        obj_svm.set_style('LOGIN')
        string_username = raw_input("login as: ")
        string_password = getpass.getpass()
        obj_svm.set_admin_user(string_username, string_password)
    else:
        result = obj_svm.set_style('CERTIFICATE')
        obj_svm.set_server_cert_verification(0)
        obj_svm.set_client_cert_and_key(in_args.cert[0], in_args.cert[1])

    # check that the api is reachable
    result = obj_svm.invoke("system-get-version")
    if (result.results_status() == "failed"):
        sys.exit("error: cannot connect to filer; " + result.results_reason())

    return obj_svm
def main():
    s = NaServer(filer, 1, 3)

    out = s.set_transport_type('HTTP')
    if (out and out.results_errno() != 0):
        r = out.results_reason()
        print("Connection to filer failed: " + r + "\n")
        sys.exit(2)

    out = s.set_style('LOGIN')

    if (out and out.results_errno() != 0):
        r = out.results_reason()
        print("Connection to filer failed: " + r + "\n")
        sys.exit(2)

    out = s.set_admin_user(user, pw)

    if (command == "object-list"):
        get_object_list(s)

    elif (command == "instance-list"):
        get_instance_list(s)

    elif (command == "counter-list"):
        get_counter_list(s)

    elif (command == "get-counter-values"):
        get_counter_values(s)

    else:
        print("Invalid operation\n")
        print_usage()
def main():
    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set HTTP transport" + r + "\n")
        sys.exit(2)

    if (command == "get"):
        snmp_get(s)

    elif (command == "status"):
        snmp_status(s)

    elif (command == "addCommunity"):
        add_community(s)

    elif (command == "deleteCommunity"):
        delete_community(s)

    else:
        print("Invalid operation\n")
        print_usage()
def main():
    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set authentication style " + r + "\n")
        sys.exit(2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')

    if (response and response.results_errno() != 0):
        r = response.results_reason()
        print("Unable to set HTTP transport" + r + "\n")
        sys.exit(2)

    if (command == "getStatus"):
        get_status(s)

    elif (command == "getVolStatus"):
        get_vol_status(s)

    elif (command == "off"):
        snapmirror_off(s)

    elif (command == "on"):
        snapmirror_on(s)

    else:
        print("Invalid operation\n")
        print_usage()
def main():
    
    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')

    if(response and response.results_errno() != 0 ):
        r = response.results_reason()
        print ("Unable to set authentication style " + r + "\n")
        sys.exit (2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')

    if(response and response.results_errno() != 0 ):
        r = response.results_reason()
        print ("Unable to set HTTP transport " + r + "\n")
        sys.exit (2)

    if(option == "get"):
        get_option_info(s)

    elif(option == "set"):
        set_option_info(s)

    elif(option == "optionsList"):
        options_list_info(s)

    else:
        print("Invalid Option \n")
        print_usage()
def construct_server(hostname, username, password):
    server = NaServer(hostname, 1, 0 )
    server.set_style('LOGIN')
    server.set_transport_type('HTTP')
    server.set_server_type('DFM')
    server.set_port(8088)
    server.set_admin_user(username, password)
    return server
Esempio n. 15
0
 def create_conn(self, host):
     conn = NaServer(host, 1, 21)
     conn.set_server_type("FILER")
     conn.set_transport_type("HTTP")
     conn.set_port(80)
     conn.set_style("LOGIN")
     conn.set_admin_user("root", "root1234")
     return conn
Esempio n. 16
0
def connect(hostname, user, password, minor_version=1, major_version=21):
    global conn
    conn = NaServer(hostname, minor_version, major_version)
    conn.set_server_type('filer')
    conn.set_transport_type('HTTPS')
    conn.set_port(443)
    conn.set_style('LOGIN')
    conn.set_admin_user(user, password)
    return conn
Esempio n. 17
0
def date_time(module):

    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    val_certs = module.params['val_certs']
    timezone = module.params['timezone']
    date = module.params['date']

    connection = NaServer(cluster, 1, 0)
    connection.set_server_type("FILER")
    connection.set_transport_type("HTTPS")
    connection.set_port(443)
    connection.set_style("LOGIN")
    connection.set_admin_user(user_name, password)

    if not val_certs:
        try:
            _create_unverified_https_context = ssl._create_unverified_context

        except AttributeError:
            # Legacy Python that doesn't verify HTTPS certificates by default
            pass
        else:
            # Handle target environment that doesn't support HTTPS verification
            ssl._create_default_https_context = _create_unverified_https_context

    results = {}

    results['changed'] = False

    args = NaElement("args")

    args.child_add(NaElement("arg", "cluster"))
    args.child_add(NaElement("arg", "date"))
    args.child_add(NaElement("arg", "modify"))
    if module.params['timezone']:
        args.child_add(NaElement("arg", "-timezone"))
        args.child_add(NaElement("arg", timezone))
    if module.params['date']:
        args.child_add(NaElement("arg", "-date"))
        args.child_add(NaElement("arg", date))

    systemCli = NaElement("system-cli")
    systemCli.child_add(args)
    xo = connection.invoke_elem(systemCli)

    if (xo.results_errno() != 0):
        r = xo.results_reason()
        module.fail_json(msg=r)
        results['changed'] = False

    else:
        results['changed'] = True

    return results
Esempio n. 18
0
def int_create(module):

    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    node = module.params['node']
    vserver = module.params['vserver']
    lif = module.params['lif']
    role = module.params['role']
    data_proto = module.params['data_proto']
    port = module.params['port']
    ip = module.params['ip']
    netmask = module.params['netmask']
    subnet = module.params['subnet']

    results = {}

    results['changed'] = False

    s = NaServer(cluster, 1, 0)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(user_name, password)

    api = NaElement('net-interface-create')
    api.child_add_string('address', ip)

    xi = NaElement('data-protocols')
    api.child_add(xi)

    for proto in data_proto:
        xi.child_add_string('data-protocol', proto)

    api.child_add_string('home-node', node)
    api.child_add_string('home-port', port)
    api.child_add_string('interface-name', lif)
    api.child_add_string('netmask', netmask)
    api.child_add_string('role', role)
    api.child_add_string('vserver', vserver)
    if module.params['subnet']:
        api.child_add_string('subnet-name', subnet)

    xo = s.invoke_elem(api)

    if (xo.results_errno() != 0):
        r = xo.results_reason()
        module.fail_json(msg=r)
        results['changed'] = False

    else:
        results['changed'] = True

    return results
def storage_pool_create(module):

    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    val_certs = module.params['val_certs']
    disk_list = module.params['disk_list']
    storage_pool = module.params['storage_pool']
    simulate = module.params['simulate']

    results = {}

    results['changed'] = False

    if not val_certs:
        try:
            _create_unverified_https_context = ssl._create_unverified_context

        except AttributeError:
            # Legacy Python that doesn't verify HTTPS certificates by default
            pass
        else:
            # Handle target environment that doesn't support HTTPS verification
            ssl._create_default_https_context = _create_unverified_https_context

    s = NaServer(cluster, 1, 0)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(user_name, password)

    api = NaElement("storage-pool-create")
    api.child_add_string("storage-pool", storage_pool)
    if module.params['simulate']:
        api.child_add_string("simulate", simulate)

    xi = NaElement("disk-list")
    api.child_add(xi)

    for disk in disk_list:
        xi.child_add_string("disk-name", disk)

    xo = s.invoke_elem(api)

    if (xo.results_errno() != 0):
        r = xo.results_reason()
        module.fail_json(msg=r)
        results['changed'] = False

    else:
        results['changed'] = True

    return results
Esempio n. 20
0
def cdotconnect(filer, username, password):
    """ return a filer connection handle """
    s = NaServer(filer, 1, 31)
    s.set_server_type("FILER")
    s.set_transport_type(
        "HTTP"
    )  # would like to use HTTPS but I get ssl cert errors on Ubuntu 15.x
    s.set_port(80)
    s.set_style("LOGIN")
    s.set_admin_user(username, password)
    return s
    def __init__(self, hostname, user, passwd):
        self.api = NaServer(hostname, 1, 3)
        response = self.api.set_style('LOGIN')

        if (response and response.results_errno() != 0):
            r = response.results_reason()
            print("Unable to set authentication style " + r + "\n")
            sys.exit(2)

        self.api.set_admin_user(user, passwd)
        self.api.set_transport_type('HTTPS')

        self.name = hostname
Esempio n. 22
0
def get_volume_info():


    args = len(sys.argv) - 1
    
    if(args < 3):
        print_usage()
 
    filer = sys.argv[1]
    user = sys.argv[2]
    pw = sys.argv[3]
   
    if(args == 4):
        volume = sys.argv[4]

    s = NaServer(filer, 1, 3)
    response = s.set_style('LOGIN')
    if(response and response.results_errno() != 0 ):
        r = response.results_reason()
        print ("Unable to set authentication style " + r + "\n")
        sys.exit (2)

    s.set_admin_user(user, pw)
    response = s.set_transport_type('HTTP')
    
    if(response and response.results_errno() != 0 ):
        r = response.results_reason()
        print ("Unable to set HTTP transport " + r + "\n")
        sys.exit (2)

    if(args == 3):
        out = s.invoke("volume-list-info")

    else:
        out = s.invoke("volume-list-info", "volume", volume)

    if(out.results_status() == "failed"):
        print (out.results_reason() + "\n")
        sys.exit (2)

    volume_info = out.child_get("volumes")
    result = volume_info.children_get()

    for vol in result:
        vol_name = vol.child_get_string("name")
        print ("Volume name :" + vol_name + "\n")
        size_total = vol.child_get_int("size-total")
        print ("Total size: " + str(size_total) + " bytes \n")
        size_used = vol.child_get_int("size-used")
        print ("Used Size : " + str(size_used) + " bytes\n")
        print ("-------------------------------------------\n")
Esempio n. 23
0
    def __init__(self,
                 logger=None,
                 debug_level=None,
                 log_console=False,
                 log_file=False):
        """Initializes settings, logging, and creates connections to vservers.

        Arguments:
            debug_level (string): Level of debugging information to log.
            logger (instance): A previously instantiated HMDCLogger instance.
            log_console (boolean): Enable/disable logging to the console.
            log_file (string): Full path to log file; False if disabled.

        Attributes:
            config_name (string): Class name for referencing.
            hmdclog (instance): Instance of HMDCLogger for logging.
            options (dictionary): Settings imported from conf file.
            vservers (dictionary): Instances of NaServer (NetApp).
        """

        config_name = self.__class__.__name__
        self.vservers = {}

        # Import conf file settings.
        conf = ConfigParser.ConfigParser()
        conf.read(self.CONFIG_FILE)

        self.options = {
            'debug_level': conf.get(config_name, 'debug_level'),
            'cdot_password': conf.get(config_name, 'cdot_password'),
            'cdot_username': conf.get(config_name, 'cdot_username'),
        }

        # Configure HMDC logging instance.
        if logger is None:
            if debug_level is None:
                debug_level = self.options['debug_level']
            self.hmdclog = hmdclogger.HMDCLogger(config_name, debug_level)
            if log_console:
                self.hmdclog.log_to_console()
            if log_file:
                self.hmdclog.log_to_file(log_file)
        else:
            self.hmdclog = logger

        # Instantiate and authenticate NetApp connections.
        for vserver in self.VOLUMES.iterkeys():
            # API major release 1, minor 20.
            self.vservers[vserver] = NaServer(vserver, 1, 20)
            # Authenticate to the NetApp.
            self._netapp_auth(vserver)
Esempio n. 24
0
def aggr_add(module):

  cluster = module.params['cluster']
  user_name = module.params['user_name']
  password = module.params['password']
  val_certs = module.params['val_certs']
  disk_type = module.params['disk_type']
  aggr = module.params['aggr']
  disk_count = module.params['disk_count']
  disk_size = module.params['disk_size']

  results = {}

  results['changed'] = False

  if not val_certs:
        try:
            _create_unverified_https_context = ssl._create_unverified_context
        
        except AttributeError:
        # Legacy Python that doesn't verify HTTPS certificates by default
            pass
        else:
        # Handle target environment that doesn't support HTTPS verification
            ssl._create_default_https_context = _create_unverified_https_context

  s = NaServer(cluster, 1 , 0)
  s.set_server_type("FILER")
  s.set_transport_type("HTTPS")
  s.set_port(443)
  s.set_style("LOGIN")
  s.set_admin_user(user_name, password)

  api = NaElement("aggr-add")
  api.child_add_string("disk-type", disk_type)
  api.child_add_string("aggregate", aggr)
  api.child_add_string("disk-count", disk_count)
  api.child_add_string("disk-size-with-unit", disk_size)


  xo = s.invoke_elem(api)

  if(xo.results_errno() != 0):
    r = xo.results_reason()
    module.fail_json(msg=r)
    results['changed'] = False

  else:
    results['changed'] = True

  return results
Esempio n. 25
0
def trigger_autosupport():
    s = NaServer(cluster, 1, 110)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(username, password)

    api = NaElement("autosupport-invoke")
    api.child_add_string("message", "Possible NFSv4 lock bug discovered")
    api.child_add_string("node-name", "*")
    api.child_add_string("type", "all")

    s.invoke_elem(api)
Esempio n. 26
0
    def _netapp_login(self):
        """ Login to our netapp filer
        """

        sys.path.append(self.config['netappsdkpath'])
        try:
            import NaServer
        except ImportError:
            self.log.error("Unable to load netapp SDK from %s" %
                           self.config['netappsdkpath'])

        self.server = NaServer.NaServer(self.ip, 1, 3)
        self.server.set_transport_type('HTTPS')
        self.server.set_style('LOGIN')
        self.server.set_admin_user(self.netapp_user, self.netapp_password)
Esempio n. 27
0
def migrate_lifs(cluster, username, password, dest_node, dest_port, vserver, lif):
    s = NaServer(cluster, 1, 110)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(username, password)

    api = NaElement("net-interface-migrate")

    api.child_add_string("destination-node", dest_node)
    api.child_add_string("destination-port", dest_port)
    api.child_add_string("lif", lif)
    api.child_add_string("vserver", vserver)
    s.invoke_elem(api)
Esempio n. 28
0
def connect_to_api(module):
    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    val_certs = module.params['val_certs']

    if not val_certs:
        invoke_elem_no_verify()

    connection = NaServer(cluster, 1 , 0)
    connection.set_server_type("FILER")
    connection.set_transport_type("HTTPS")
    connection.set_port(443)
    connection.set_style("LOGIN")
    connection.set_admin_user(user_name, password)
Esempio n. 29
0
    def prepare(self, arglist):
        self.host = self.getHost("RESOURCE_HOST_0")
        self.iscsiHost = self.getHost("RESOURCE_HOST_1")
        self.scsiid = string.split(
            self.host.lookup("OPTION_CARBON_DISKS", None), "scsi-")[1]

        ip = self.host.lookup(["UCSISCSI", "TARGET_ADDRESS"], None)
        username = self.host.lookup(["UCSISCSI", "TARGET_USERNAME"], None)
        password = self.host.lookup(["UCSISCSI", "TARGET_PASSWORD"], None)
        self._server = NaServer.NaServer(ip, 1, 0)
        self._server.set_admin_user(username, password)

        xenrt.TEC().logverbose("Number of active paths to boot LUN = %d" %
                               self.countActivePaths())
        if self.countActivePaths() != 2:
            raise xenrt.XRTError("Host does not have 2 paths to boot LUN")
Esempio n. 30
0
def aggr_create(module):

    cluster = module.params['cluster']
    user_name = module.params['user_name']
    password = module.params['password']
    node = module.params['node']
    disk_type = module.params['disk_type']
    aggr = module.params['aggr']
    disk_count = module.params['disk_count']
    disk_size = module.params['disk_size']
    raid_size = module.params['raid_size']
    raid_type = module.params['raid_type']

    results = {}

    results['changed'] = False

    s = NaServer(cluster, 1, 0)
    s.set_server_type("FILER")
    s.set_transport_type("HTTPS")
    s.set_port(443)
    s.set_style("LOGIN")
    s.set_admin_user(user_name, password)

    api = NaElement("aggr-create")
    api.child_add_string("disk-type", disk_type)
    api.child_add_string("aggregate", aggr)
    api.child_add_string("disk-count", disk_count)
    api.child_add_string("disk-size-with-unit", disk_size)
    api.child_add_string("raid-size", raid_size)
    api.child_add_string("raid-type", raid_type)

    xi = NaElement("nodes")
    api.child_add(xi)
    xi.child_add_string("node-name", node)

    xo = s.invoke_elem(api)

    if (xo.results_errno() != 0):
        r = xo.results_reason()
        module.fail_json(msg=r)
        results['changed'] = False

    else:
        results['changed'] = True

    return results