Skip to content

Commit 084ff65

Browse files
authored
feat: expose displayName in createInstance (#798)
* feat: expose displayName in createInstance * tests: remove unnecessary casts in tests
1 parent f1cd05f commit 084ff65

2 files changed

Lines changed: 39 additions & 37 deletions

File tree

handwritten/spanner/src/index.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export interface RequestConfig {
9090
export interface CreateInstanceRequest {
9191
config: string;
9292
nodes?: number;
93+
displayName?: string;
9394
labels?: {[k: string]: string} | null;
9495
}
9596
/**
@@ -277,6 +278,11 @@ class Spanner extends GrpcService {
277278
* be used to control how resource metrics are aggregated. And they can
278279
* be used as arguments to policy management rules (e.g. route,
279280
* firewall, load balancing, etc.).
281+
* @property {string} [displayName] The descriptive name for this instance
282+
* as it appears in UIs. Must be unique per project and between 4 and 30
283+
* characters in length.
284+
* Defaults to the instance unique identifier '<instance>' of the full
285+
* instance name of the form 'projects/<project>/instances/<instance>'.
280286
*/
281287
/**
282288
* @typedef {array} CreateInstanceResponse
@@ -359,14 +365,14 @@ class Spanner extends GrpcService {
359365
);
360366
}
361367
const formattedName = Instance.formatName_(this.projectId, name);
362-
const shortName = formattedName.split('/').pop();
368+
const displayName = config.displayName || formattedName.split('/').pop();
363369
const reqOpts = {
364370
parent: 'projects/' + this.projectId,
365-
instanceId: shortName,
371+
instanceId: displayName,
366372
instance: extend(
367373
{
368374
name: formattedName,
369-
displayName: shortName,
375+
displayName,
370376
nodeCount: config.nodes || 1,
371377
},
372378
config

handwritten/spanner/test/index.ts

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -525,25 +525,29 @@ describe('Spanner', () => {
525525
});
526526
done();
527527
};
528-
spanner.createInstance(
529-
NAME,
530-
CONFIG as CreateInstanceRequest,
531-
assert.ifError
532-
);
528+
spanner.createInstance(NAME, CONFIG, assert.ifError);
533529
});
534530

535531
it('should accept a path', () => {
536532
const stub = sandbox.stub(FakeInstance, 'formatName_').callThrough();
537-
spanner.createInstance(
538-
PATH,
539-
CONFIG as CreateInstanceRequest,
540-
assert.ifError
541-
);
533+
spanner.createInstance(PATH, CONFIG, assert.ifError);
542534

543535
const [, name] = stub.lastCall.args;
544536
assert.strictEqual(name, PATH);
545537
});
546538

539+
it('should accept the displayName', done => {
540+
const displayName = 'my-instance';
541+
const config = Object.assign({}, CONFIG, {displayName});
542+
543+
spanner.request = config => {
544+
assert.strictEqual(config.reqOpts.instance.displayName, displayName);
545+
done();
546+
};
547+
548+
spanner.createInstance(NAME, config, assert.ifError);
549+
});
550+
547551
describe('config.nodes', () => {
548552
it('should rename to nodeCount', () => {
549553
const config = extend({}, CONFIG, {nodes: 10});
@@ -586,17 +590,13 @@ describe('Spanner', () => {
586590
});
587591

588592
it('should execute callback with error & API response', done => {
589-
spanner.createInstance(
590-
NAME,
591-
CONFIG as CreateInstanceRequest,
592-
(err, instance, op, resp) => {
593-
assert.strictEqual(err, ERROR);
594-
assert.strictEqual(instance, null);
595-
assert.strictEqual(op, null);
596-
assert.strictEqual(resp, API_RESPONSE);
597-
done();
598-
}
599-
);
593+
spanner.createInstance(NAME, CONFIG, (err, instance, op, resp) => {
594+
assert.strictEqual(err, ERROR);
595+
assert.strictEqual(instance, null);
596+
assert.strictEqual(op, null);
597+
assert.strictEqual(resp, API_RESPONSE);
598+
done();
599+
});
600600
});
601601
});
602602

@@ -618,19 +618,15 @@ describe('Spanner', () => {
618618
.stub(spanner, 'instance')
619619
.returns(fakeInstanceInstance);
620620

621-
spanner.createInstance(
622-
NAME,
623-
CONFIG as CreateInstanceRequest,
624-
(err, instance, op, resp) => {
625-
assert.ifError(err);
626-
const [instanceName] = instanceStub.lastCall.args;
627-
assert.strictEqual(instanceName, formattedName);
628-
assert.strictEqual(instance, fakeInstanceInstance);
629-
assert.strictEqual(op, OPERATION);
630-
assert.strictEqual(resp, API_RESPONSE);
631-
done();
632-
}
633-
);
621+
spanner.createInstance(NAME, CONFIG, (err, instance, op, resp) => {
622+
assert.ifError(err);
623+
const [instanceName] = instanceStub.lastCall.args;
624+
assert.strictEqual(instanceName, formattedName);
625+
assert.strictEqual(instance, fakeInstanceInstance);
626+
assert.strictEqual(op, OPERATION);
627+
assert.strictEqual(resp, API_RESPONSE);
628+
done();
629+
});
634630
});
635631
});
636632
});

0 commit comments

Comments
 (0)