Reinstalling the BMS OS

Function

This API is used to reinstall the BMS OS. The OS of BMSs supporting quick provisioning can be reinstalled using the original image without any change to the data disks. Password and key pair injection are supported during OS reinstallation.

To check whether a BMS is quickly provisioned, use the Querying Details About Flavors and Extended Flavor Information API.

This API is an asynchronous API. Calling the API successfully indicates that the task is delivered successfully. To check whether the task is successful, use the Querying Task Statuses API.

Constraints

  • For BMSs created from private images, ensure that Cloud-Init (for Linux) or Cloudbase-Init (for Windows) has been installed for the image. If an image without Cloud-Init or Cloudbase-Init is used, this API cannot inject a key pair or password. Cloud-Init or Cloudbase-Init has been installed for public images by default.
  • You are not allowed to perform other operations when reinstalling the OS. Otherwise, reinstalling the OS will fail.
  • You can reinstall the OS only on a BMS that is stopped or for which OS reinstallation has failed.
  • The Windows image does not support password injection. user_data of the Linux image is the encrypted password.

URI

POST /v1/{project_id}/baremetalservers/{server_id}/reinstallos

Table 1 lists the URI parameters.
Table 1 Parameter description

Parameter

Mandatory

Description

project_id

Yes

Specifies the project ID.

For details about how to obtain the project ID, see Obtaining a Project ID.

server_id

Yes

Specifies the BMS ID.

You can obtain the BMS ID from the BMS console or using the Querying BMSs (Native OpenStack API) API.

Request

  • Request parameters

    Parameter

    Mandatory

    Type

    Description

    os-reinstall

    Yes

    Object

    Specifies the operation of reinstalling the BMS OS. For details, see Table 2.

    Table 2 os-reinstall field data structure description

    Parameter

    Mandatory

    Type

    Description

    adminpass

    No

    String

    Specifies the initial login password of the BMS administrator account.

    The Linux administrator is root, and the Windows administrator is Administrator.

    Recommended password complexity requirements are as follows:

    • The password contains 8 to 26 characters.
    • Contains at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters !@$%^-_=+[{}]:,./?
    • The password cannot contain the username or the username in reverse.
    NOTE:
    • For Windows BMSs, the password cannot contain more than two consecutive characters in the username.
    • For Linux BMSs, user_data can be used to inject a password. In this case, adminpass is invalid.
    • Either adminpass or keyname can be set.
    • If both adminpass and keyname are empty, user_data in metadata must be set.

    keyname

    No

    String

    Specifies the key pair name.

    You can create a key pair using the Creating and Importing an SSH Key Pair (Native OpenStack API) API, or query existing key pairs using the Querying SSH Key Pairs (Native OpenStack API) API.

    userid

    No

    String

    Specifies the user ID. You can obtain the user ID from My Credential on the management console.

    metadata

    No

    Object

    Specifies the BMS metadata. For details, see Table 3.

    Table 3 metadata field data structure description

    Parameter

    Mandatory

    Type

    Description

    user_data

    No

    String

    Specifies the Linux image root password injected during the BMS OS reinstallation. It is a user-defined initial password.

    Note: The password change script must be encoded using Base64.

    Recommended password complexity requirements are as follows:

    • Contains 8 to 26 characters.
    • Contains at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters !@$%^-_=+[{}]:,./?

    An example is as follows:

    • Use a plaintext password (risky in security), for example, cloud.1234.
      1
      2
      #!/bin/bash 
      echo 'root:Cloud.1234' | chpasswd ;
      
    • Use a password.
      1
      2
      #!/bin/bash 
      echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910' | chpasswd -e
      
    • This script must be encoded using Base64.

    where, $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig is the ciphertext password, which can be generated as follows:

    1. Generate an encrypted salt value.
      1
      2
      [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()" 
      $6$V6azyeLwcD3CHlpY
      
    2. Generate a ciphertext password based on the salt value.
      1
      2
      [root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')" 
       $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig/GpOkLcOhab9smJoLKYm/Tf9Hcwa6DpiPDhdHfGEAPajFmLZa0YDd910
      
    3. After the ciphertext is generated, the password change script must be encoded using Base64.
  • Example request
    1
    POST https://{BMS Endpoint}/v1/bbf1946d374b44a0a2a95533562ba954/baremetalservers/cf2a8b97-b5c6-47ef-9714-eb27adf26e5b/reinstallos
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        "os-reinstall": {
            "keyname": "KeyPair-350b", 
            "userid": "7e25b1da389f4697a79df3a0e5bd494e", 
            "metadata": {
                  "user_data":  "IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiR0Y0pZamUkNGhhUHlNZFR4VWVHc2dTMWFmL1NsMm4vbXZzdy5wSFdjbTVBc084OWFhUFhGNXUvVnJ5OXJiYmZZSW45SmZac2k3SlRmd2Z6djJPbTBHRFZUZTd6RDEnIHwgY2hwYXNzd2QgLWU7"
            }
        }
    }
    

Response

See Task ID Response.

Returned Values

Normal values

Returned Values

Description

200

The server has successfully processed the request.

For details about other returned values, see Status Codes.

Error Codes

See Error Codes.