def createComputeTemplateAdvance(novaUrl, token, flavorProps, computeID):

    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(
        novaUrl, address) + '/flavors/' + computeID + '/os-extra_specs'
    putBody = json.dumps({'extra_specs': flavorProps})
    headers = {'X-Auth-Token': token}
    print url
    print putBody
    return restUtils.postJSON(address, url, putBody, headers)
def exportImage(cinderUrl, token, image_id, image_name):
    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(cinderUrl,
                                      address) + '/image-backups/export_image'
    headers = {'X-Auth-Token': token}
    print({
        'image-backup': {
            'src_image_id': image_id,
            'name': 'export_svt_' + image_name,
            'description': 'SVT image export'
        }
    })
    postBody = json.dumps({
        'image-backup': {
            'src_image_id': image_id,
            'name': 'export_svt_' + image_name,
            'description': 'SVT image export'
        }
    })
    restUtils.postJSON(address, url, postBody, headers)
Пример #3
0
def unmanage_vol(cinderUrl, token, volume_id, host_name):
    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(
        cinderUrl, address) + '/os-hosts/' + host_name + '/unmanage'
    print(url)
    headers = {'X-Auth-Token': token}
    volProps = {"volumes": [volume_id]}
    postbody = json.dumps(volProps)
    print(postbody)
    registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON(
        address, url, postbody, headers)
def bulkCreateAttachVolume(novaUrl, token, volumeProps, vm_id):
    address = openstackUtils.parseAddress(novaUrl)
    url = SVR_ACT % (openstackUtils.parseBaseURL(novaUrl, address), vm_id)
    postBody = json.dumps(
        {'bulkVolumeAttach': {
            'volumeAttachment': [volumeProps]
        }})
    headers = {'X-Auth-Token': token}
    print "Attach Request Details"
    print address + url
    print postBody
    return restUtils.postJSON(address, url, postBody, headers)
Пример #5
0
def createHost(novaUrl, token, hostProps):

    reg_key = 'registration'
    print(reg_key)

    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(novaUrl, address) + '/os-hosts'
    postBody = json.dumps({'host': {'registration': hostProps}})
    headers = {'X-Auth-Token': token}
    print(("post body", postBody))
    print(url)
    print(headers)
    return restUtils.postJSON(address, url, postBody, headers)
def registerHmc(novaUrl, token, hmcProps):
    '''
    This method handles REST POST request register an HMC with
    PowerVC. Body should contain access_ip, user_id, password,
    and optionally the hmc_display_name.
    :param novaUrl: Url for nova
    :param token: authentication token id
    :returns: dictionary containing the registration info
    '''
    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(novaUrl, address) + '/ibm-hmcs'
    putBody = json.dumps({'hmc': {'registration': hmcProps}})
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, putBody, headers)
def create_port(token, quantumUrl, network_id, ipaddr, subnet_id):
    print "Creating port for IP address"
    address = openstackUtils.parseAddress(quantumUrl)
    url = openstackUtils.parseBaseURL(quantumUrl, address) + '/v2.0/ports'
    postBody = json.dumps({
        "port": {
            "network_id": network_id,
            "fixed_ips": [{
                "subnet_id": subnet_id,
                "ip_address": ipaddr
            }]
        }
    })
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
def createHost(novaUrl, token, hostProps):
    #print 'ENTER createHost'
    """Originally, this did not provide the 'registration' level for
    'hostProps', which is inconsistent with both 'registerHmc' and
    'updateHmcRegistration'.  So, now we provide it if needed.  The
    reason for not just providing it in all cases was concern for legacy
    code that is already providing the 'registration' level.
    """
    reg_key = 'registration'
    if reg_key not in hostProps:
        hostProps = {reg_key: hostProps}
    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(novaUrl, address) + '/os-hosts'
    postBody = json.dumps({'host': hostProps})
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #9
0
def svc_reg(cinderUrl, token, svc_host_type, svc_disp_name, svc_access_ip,
            svc_pool_name, svc_userid, svc_pwd):
    hostProps = {
        "host_type": svc_host_type,
        "access_ip": svc_access_ip,
        "user_id": svc_userid,
        "password": svc_pwd,
        "volume_pool_name": svc_pool_name,
        "auto_add_host_key": "true",
        "host_display_name": svc_disp_name,
    }
    reg_key = 'Registration'

    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(cinderUrl, address) + '/os-hosts'
    postbody = json.dumps({'host': {'registration': hostProps}})
    headers = {'X-Auth-Token': token}
    registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON(
        address, url, postbody, headers)
Пример #10
0
def addSRIOVvNIC(novaUrl, quantumUrl, token, serverid, network_id, ipaddr,
                 subnet_id, sriov_vnic_required_vfs, sriov_capacity):
    address = openstackUtils.parseAddress(novaUrl)
    #print "address : ", address
    port_resp, body_json = get_port(token, quantumUrl)
    print ipaddr
    #print len(body_json['ports'])
    #print body_json['ports'][93]['fixed_ips'][0]['ip_address']
    temp = []
    port_id = 0
    for i in range(len(body_json['ports'])):
        print i
        if body_json['ports'][i]['fixed_ips']:
            ip = body_json['ports'][i]['fixed_ips'][0]['ip_address']
            #print ip
            if ip == ipaddr:
                port_id = body_json['ports'][i]['id']
                print "ip is found"
                break
            else:
                print "port not present"

    print port_id
    if port_id == 0:
        port_resp, bdy_json = create_SRIOV_port(token, quantumUrl, network_id,
                                                ipaddr, subnet_id,
                                                sriov_vnic_required_vfs,
                                                sriov_capacity)
        port_id = bdy_json['port']['id']
    print "Port response", port_resp
    print "portId", port_id
    url = openstackUtils.parseBaseURL(novaUrl, address) + \
        '/servers/' + serverid + '/os-interface'
    print "url : ", url
    postBody = json.dumps({"interfaceAttachment": \
                           {"port_id": port_id}})

    print "postbody:", postBody
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #11
0
def create_SRIOV_port(token, quantumUrl, network_id, ipaddr, subnet_id,
                      sriov_vnic_required_vfs, sriov_capacity):
    print "Creating port for IP address"
    address = openstackUtils.parseAddress(quantumUrl)
    url = openstackUtils.parseBaseURL(quantumUrl, address) + '/v2.0/ports'
    sriov_port_Props = {
        "name": "powervc_attached",
        "network_id": network_id,
        "fixed_ips": [{
            "subnet_id": subnet_id,
            "ip_address": ipaddr
        }],
        "binding:vnic_type": "direct",
        "binding:profile": {
            "delete_with_instance": 1,
            "vnic_required_vfs": sriov_vnic_required_vfs,
            "capacity": sriov_capacity
        }
    }
    postBody = json.dumps({'port': sriov_port_Props})
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #12
0
def virt_fab_reg(cinderUrl, token, fab_access_ip, fabric_disp_name,
                 fabric_type, zoning_policy, fab_userid, fab_passwd,
                 virtual_fabric_id):
    fabProps = {
        "access_ip": fab_access_ip,
        "auto_add_host_key": "true",
        "fabric_display_name": fabric_disp_name,
        "fabric_type": fabric_type,
        "zoning_policy": zoning_policy,
        "auto_add_certificate": "false",
        "password": fab_passwd,
        "user_id": fab_userid,
        "port": "22",
        "virtual_fabric_id": virtual_fabric_id,
        "vsan": virtual_fabric_id
    }
    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(cinderUrl, address) + '/san-fabrics'
    postbody = json.dumps({'fabric': {'registration': fabProps}})
    headers = {'X-Auth-Token': token}
    registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON(
        address, url, postbody, headers)
Пример #13
0
def register_hmc(novaUrl, token, hmc_ip_list, hmc_userid_list,
                 hmc_password_list, hmc_disp_name):

    hmcProps = {
        'access_ip': hmc_ip_list,
        'user_id': hmc_userid_list,
        'password': hmc_password_list,
        'hmc_display_name': hmc_disp_name
    }
    print "Registering HMC:", str(hmcProps)
    print token

    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(novaUrl, address) + '/ibm-hmcs'
    putBody = json.dumps({'hmc': {'registration': hmcProps}})
    print putBody
    headers = {'X-Auth-Token': token}
    registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON(
        address, url, putBody, headers)

    print "Registration of HMC response:"
    return str(registrnRespnsBodyJSON)
Пример #14
0
def create_scg(token, novaUrl, scg_name, vios1_id, vios2_id):
    address = openstackUtils.parseAddress(novaUrl)
    url = openstackUtils.parseBaseURL(novaUrl,
                                      address) + '/storage-connectivity-groups'
    scg_props = {
        "display_name": scg_name,
        "fc_storage_access": 'true',
        "auto_add_vios": 'false',
        "include_untagged": 'false',
        "enabled": 'true',
        "vios_ids": [vios1_id, vios2_id],
        "exact_redundancy": 'false',
        "vios_redundancy": "1",
        "fabric_set_req": "per_vios",
        "fabric_set_npiv": ["*"],
        "ports_per_fabric_npiv": "1",
        "boot_connectivity": ["npiv"],
        "data_connectivity": ["npiv"],
    }

    postBody = json.dumps({'storage_connectivity_group': scg_props})
    print(postBody)
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #15
0
def unpauseServer(novaUrl, token, server_id, actionProps):
    address = openstackUtils.parseAddress(novaUrl)
    url = SVR_ACT % (openstackUtils.parseBaseURL(novaUrl, address), server_id)
    postBody = json.dumps(actionProps)
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #16
0
def SnapshotGenericGroup(cinderUrl, token, connectionProps):
    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(cinderUrl, address) + '/group_snapshots'
    postBody = json.dumps({'group_snapshot': connectionProps})
    headers = {'X-Auth-Token': token, 'OpenStack-API-Version': 'volume latest'}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #17
0
def registerStorageProvider(cinderUrl, token, volsProps):
    address = openstackUtils.parseAddress(cinderUrl)
    url = HOSTS % openstackUtils.parseBaseURL(cinderUrl, address)
    postBody = json.dumps(volsProps)
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #18
0
def attachVolume(novaUrl, token, volumeProps, vm_id):
    address = openstackUtils.parseAddress(novaUrl)
    url = ATTCH_VOL % (openstackUtils.parseBaseURL(novaUrl, address), vm_id)
    postBody = json.dumps({'volumeAttachment': volumeProps})
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)
Пример #19
0
def createConsistencySnapshots(cinderUrl, token, connectionProps):
    address = openstackUtils.parseAddress(cinderUrl)
    url = openstackUtils.parseBaseURL(cinderUrl, address) + '/cgsnapshots'
    postBody = json.dumps({'cgsnapshot': connectionProps})
    headers = {'X-Auth-Token': token}
    return restUtils.postJSON(address, url, postBody, headers)