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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)