コード例 #1
0
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)
コード例 #2
0
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)
コード例 #4
0
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)
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)